我正在尝试使用Java 9 Jigsaw模块系统(还没有模块经验),并希望用它来封装我项目中的类,但这很令人困惑.
根据这篇文章,应该可以在一个项目中拥有多个模块.我在Eclipse Oxygen(支持Java 9)中创建了一个新项目,其结构与本文中所示的相同.但Eclipse一直告诉我,我不能module-info.java在一个项目中拥有多个.
我真的不知道如何告诉Eclipse它应该使用"多模块模式".我真的很感激不必为每个模块创建一个新项目.
这有效:
这不是:
如何使用Eclipse部署模块化项目?关于新的jmod扩展没什么可看的.我仍然像以前一样将其导出为可运行的JAR文件吗?
请注意,我的问题涉及使用IDE(没有命令行,我的意思是IDE应该是可能的,对吗?)谢谢你启发我.
这是一个难以破解的坚果.我在使用varargs和泛型之间发生了冲突.给定代码:
public class MyObject implements Comparable<MyObject>
{
private String name;
private int index;
@Override
public int compareTo(MyObject o)
{
if (name.compareTo(o.name) != 0)
return name.compareTo(o.name);
return ((Integer) index).compareTo(o.index);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望该compareTo方法使用多个比较条件.如果字符串相同,则使用ints代替.通常情况我会说.
我希望创建一个静态方法来处理这个问题.我希望chainedCompare像这样调用新方法:
public int compareTo(MyObject o)
{
return chainedCompare(this, o, myO -> myO.name, myO -> myO.index);
}
Run Code Online (Sandbox Code Playgroud)
lambdas是Java 8接口函数的变量.所以首先我写了这样的方法:
public static <T, C extends Comparable<C>> int chainedCompare(T object1, T object2, Function<T, C>... comparisons)
{
int compareValue = 0;
for (Function<T, C> comparison : comparisons)
{
compareValue …Run Code Online (Sandbox Code Playgroud) 在我的舞台上,我像往常一样为程序在顶部插入了一个菜单栏。我想在舞台的另一个上下文中给 ALT 键(连同箭头键)一些逻辑。但是每次我按 ALT 和箭头时,我也会无意中浏览菜单栏的菜单。
我想避免这种情况或更好地完全禁用这种助记符行为。将所有菜单的 mnemonicParsing 属性设置为 false 失败。我也尝试过这种方法但没有成功:
menubar.addEventFilter(KeyEvent.ANY, e -> e.consume());
Run Code Online (Sandbox Code Playgroud) 我有一个方法的重载,并希望在他们的 Javadoc 注释中向其他人提供链接。但是我对泛型和/或可变参数有问题。我希望我可以这样写:
/**
* @see {@link #method(Object[], Object[])}
* @see {@link #method(Collection, Object[])}
*/
public <T> void method(T object, T... furtherObjects) {}
/**
* @see {@link #method(Object, Object[])}
* @see {@link #method(Collection, Object[])}
*/
public <T> void method(T[] objects, T... furtherObjects) {}
/**
* @see {@link #method(Object[], Object[])}
* @see {@link #method(Collection, Object[])}
*/
public <T> void method(Collection<T> objects, T... furtherObjects) {}
Run Code Online (Sandbox Code Playgroud)
但是每个链接都会导致第一种方法。使用 Eclipse。