在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之外。
答案 0 :(得分:3)
如果Eclipse使用new ArrayList()
自动完成,它将忽略泛型类型,new ArrayList<>()
是原始类型的实例。
但它使用new ArrayList<String>()
自动完成,{{1}}使用diamond operator。此运算符自Java 7以来就存在,并且等同于{{1}},但没有冗余。
简而言之,Eclipse做的是正确的。