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

Tor*_*ten 6 java eclipse generics compiler-warnings

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

我有这个代码:

SomeClass<SomeType> someVariable = new SomeClass<SomeType>(createSomeObject());
Run Code Online (Sandbox Code Playgroud)

现在我收到一个警告:

Redundant specification of type arguments <SomeType>
Run Code Online (Sandbox Code Playgroud)

如果我使用快速修复Eclipse给我这个:

SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());
Run Code Online (Sandbox Code Playgroud)

结果如何

Got an exception - expecting EOF, found 'xyz'
Run Code Online (Sandbox Code Playgroud)

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

当我删除有角度的括号时,我收到此警告:

SomeClass is a raw type. References to generic type SomeClass<M> should be parameterized
Run Code Online (Sandbox Code Playgroud)

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

WTF正在进行中?

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

Bri*_*new 5

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

来自 Java 7 的类型推断机制。两次指定泛型类型确实是多余的,因为编译器可以简单地从

SomeClass<SomeType> someVariable = new SomeClass<>(createSomeObject());
Run Code Online (Sandbox Code Playgroud)

因此,您不需要在声明和定义中使用泛型类型(类型推断可以更进一步——例如,使用 Scala,您只需将 LHS 声明为 a valor var,编译器就知道它真正需要的是什么类型)。