小编Arc*_*eus的帖子

在Eclipse中定义Java 9多模块项目

我正在尝试使用Java 9 Jigsaw模块系统(还没有模块经验),并希望用它来封装我项目中的类,但这很令人困惑.

根据这篇文章,应该可以在一个项目中拥有多个模块.我在Eclipse Oxygen(支持Java 9)中创建了一个新项目,其结构与本文中所示的相同.但Eclipse一直告诉我,我不能module-info.java在一个项目中拥有多个.

我真的不知道如何告诉Eclipse它应该使用"多模块模式".我真的很感激不必为每个模块创建一个新项目.

这有效:

在此输入图像描述

这不是:

在此输入图像描述

但根据这篇文章,这样的事情应该有效:

在此输入图像描述

如何使用Eclipse部署模块化项目?关于新的jmod扩展没什么可看的.我仍然像以前一样将其导出为可运行的JAR文件吗?

请注意,我的问题涉及使用IDE(没有命令行,我的意思是IDE应该是可能的,对吗?)谢谢你启发我.

eclipse module project java-platform-module-system java-9

12
推荐指数
1
解决办法
1861
查看次数

结合varargs和泛型用于Java中的链式比较

这是一个难以破解的坚果.我在使用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)

java generics wildcard variadic-functions comparable

8
推荐指数
1
解决办法
241
查看次数

如何禁用 JavaFX MenuBar 的助记符?

在我的舞台上,我像往常一样为程序在顶部插入了一个菜单栏。我想在舞台的另一个上下文中给 ALT 键(连同箭头键)一些逻辑。但是每次我按 ALT 和箭头时,我也会无意中浏览菜单栏的菜单。

我想避免这种情况或更好地完全禁用这种助记符行为。将所有菜单的 mnemonicParsing 属性设置为 false 失败。我也尝试过这种方法但没有成功:

menubar.addEventFilter(KeyEvent.ANY, e -> e.consume());
Run Code Online (Sandbox Code Playgroud)

javafx menubar keyevent mnemonics alt-key

5
推荐指数
1
解决办法
1711
查看次数

如何链接到 Javadoc 注释中的重载方法?

我有一个方法的重载,并希望在他们的 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。

generics methods javadoc overloading variadic-functions

5
推荐指数
0
解决办法
390
查看次数