在具体实现类中使用泛型类型自动完成

时间:2013-08-13 21:12:07

标签: java eclipse generics autocomplete

在Ecipse(Kepler)中编写java时,我在创建泛型接口类型的新变量时出现问题,并在初始化变量时自动完成其具体实现。我在谈论通用接口/具体实现,如List / ArrayList和Map / HashMap。

示例:您在IDE中输入:

List<String> stringList = new ArrayL

然后,使用自动完成(ctrl + space)用ArrayList()填充代码,但这就是IDE放入代码的内容:

List<String> stringList = ArrayList<>()

所以他们完全忽略了String泛型类型参数化。关于如何让Eclipse IDE在变量声明中检测泛型类型参数并将其放入实现构造函数的type参数中的任何想法?这曾经在Eclipse中自动为我工作,但在过去几个月突然停止工作。我不确定我对我的工作区做了什么配置更改导致这种情况发生...除了从Eclipse Juno升级到Eclipse Kepler之外。

1 个答案:

答案 0 :(得分:3)

如果Eclipse使用new ArrayList()自动完成,它将忽略泛型类型,new ArrayList<>()是原始类型的实例。

但它使用new ArrayList<String>()自动完成,{{1}}使用diamond operator。此运算符自Java 7以来就存在,并且等同于{{1}},但没有冗余。

简而言之,Eclipse做的是正确的。