Eclipse警告:未经检查的转换与类型参数的冗余规范

时间:2013-02-12 09:44:14

标签: java eclipse generics compiler-warnings

我刚刚从JDK1.6切换到JDK 1.7。

我有这段代码:

SomeClass<SomeType> someVariable = new SomeClass<SomeType>(createSomeObject());

现在我收到警告:

Redundant specification of type arguments <SomeType>

如果我使用快速修复程序,Eclipse会给我这个:

SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());

结果是

Got an exception - expecting EOF, found 'xyz'

xyz是我的代码文本中的下一个项目。

当我移除有角度的支架时,我收到此警告:

SomeClass is a raw type. References to generic type SomeClass<M> should be parameterized

如果我添加了类型参数,我最终会收到第一个警告(冗余规范......)

WTF正在进行中?

我想保留两个警告,我仍在使用Eclipse 3.7.1。我不愿意更新我的Eclipse,如果还有另一种方法可以解决这个问题,因为我需要一些时间来按照我想要的方式配置它。

1 个答案:

答案 0 :(得分:3)

  

类型参数的冗余规范<SomeType>

来自Java 7的type inference mechanism。两次指定泛型类型确实是多余的,因为编译器可以直接从

中直接得到你需要的东西
SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());

因此您在声明和定义中都不需要泛型类型(类型推断可以更进一步 - 例如,使用Scala,您只需将LHS声明为val或{ {1}},编译器知道它真正需要的类型。)