Eclipse通过泛型类和静态方法自动完成

时间:2013-06-11 11:19:52

标签: java eclipse generics autocomplete

对于泛型类,我通常更喜欢静态方法而不是构造函数,以避免繁琐的冗余类型参数(下面给出的示例用于说明)。

但是当使用自动完成时,Eclipse总是会建议类型参数,例如:

example(ctrl + space)Example<T>

然后我必须手动删除<T>,而是添加我的静态方法,例如Example.new()。是否有可能更改此行为或完全不同的方便快捷方式以获得更好的工作流程? (我还在使用Eclipse 3,这在4中已经改变了吗?)

static final class Example<T> {

    /** Private, use factory method instead. */
    private Example() {
    }

    public static <T> Example<T> create() {
        return new Example<T>();
    }
}

public static void main(String[] args) {
    Example<Integer> example = Example.create();
}

3 个答案:

答案 0 :(得分:3)

我认为这是eclipse中的一个错误,如Auto complete inserts type parameter placeholders too aggressively

所示

你可以看看这可能会对你有所帮助Eclipse and Generic Types

答案 1 :(得分:2)

这件事一直困扰着我,我刚刚注意到,如果您按'完成'。而不是“返回”,它会完成为类型名称。所以

  • data.table完成git clone <old_url> cd <repo_dir_name> git remote add new_remote <new_url> git push --all new_remote ,并打开完成对话框,提示该类的字段和方法。
  • Exam<ctrl+space>.完成到Example.并关闭完成对话框。

我看不到任何有关退格键工作正常的证据。

答案 2 :(得分:1)

如果在点击(ctrl-space)后立即点击退格键两次,Eclipse将删除整个类型参数子句。实施此目的是为了解决https://bugs.eclipse.org/bugs/show_bug.cgi?id=301990

它并不完美 - 我宁愿eclipse仅在类型名称以new开头时添加类型参数子句,但它至少使其易于管理。