1

在 Ecipse (Kepler) 中编码 java 时,我在创建通用接口类型的新变量时遇到问题,并且在初始化变量时自动完成其具体实现。我说的是通用接口/具体实现,例如 List/ArrayList 和 Map/HashMap。

示例:您在 IDE 中输入:

List<String> stringList = new ArrayL

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

List<String> stringList = ArrayList<>()

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

4

1 回答 1

3

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

new ArrayList<>()但它使用菱形运算符自动完成。这个运算符从 Java 7 开始就存在并且等价于new ArrayList<String>(),但没有冗余。

所以,简而言之,Eclipse 做了正确的事。

于 2013-08-13T21:22:15.937 回答