我刚刚从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,如果还有另一种方法可以解决这个问题,因为我需要一些时间来按照我想要的方式配置它。
答案 0 :(得分:3)
类型参数的冗余规范
<SomeType>
来自Java 7的type inference mechanism。两次指定泛型类型确实是多余的,因为编译器可以直接从
中直接得到你需要的东西SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());
因此您在声明和定义中都不需要泛型类型(类型推断可以更进一步 - 例如,使用Scala,您只需将LHS声明为val
或{ {1}},编译器知道它真正需要的类型。)