我们在应用程序中大量使用java泛型。
List<String> list = new ArrayList<>();
在上面的一行中,我没有在右侧给出“字符串”,这是正确的吗?它在我的日食中给出了错误,但它没有在我的同事日食中显示错误,可能是什么原因?
答案 0 :(得分:2)
对于Java 7或更高版本是正确的。它会在下面给出错误。
答案 1 :(得分:2)
这是Java 7中的“菱形运算符”(并非真正的运算符)功能,它允许从使用结果的上下文中推断构造函数调用的类型参数。
它对Java 7有效,但之前没有。您应该检查Eclipse中的Java设置,并将它们与您的同事进行比较。我的猜测是你的源版本不是7而他的是。如果您具有项目特定的设置,则该设置位于Window / Preferences / Java / Compiler选项卡上,或者只是项目属性的“Java Compiler”部分。合规级别为1.7将启用Java 7功能。
有关详细信息,请参阅"type inference for generic instance creation"上的Oracle页面。