钻石操作员,泛型和编译问题

时间:2016-07-11 11:51:10

标签: java netbeans

我遇到了一个问题,我的代码在NetBeans中编译并运行良好,但是当我尝试使用javac使用命令行进行编译时,我得到一个未经检查的警告错误,但它失败了。当我使用-Xlint进行编译时:取消选中,我会得到一个错误的详细描述,指出问题所在。

这里我没有正确使用泛型,我的问题是:     List<String> name = new ArrayList();

添加菱形运算符后,代码现在可以很好地编译进出IDE     List<String> name = new ArrayList<>();

似乎在第一个例子中我必须使用cast,而第二个例子使用泛型。

我的问题是:这是IDE中的错误吗? NetBeans似乎可以捕获各种其他错误,但为什么我的代码在IDE中编译得很好而不能在命令行中编译?很明显我是编程的新手,所以如果我没有提出任何重要的问题,请原谅我。

接近回答我的问题的信息: The Java™ TutorialsWhat is the point of the diamond operator in Java 7?(stackOverflow)

我抬头找到了Bug 250587,但不一样。 此外,我是最新的NetBeans上没有可用的更新。我的javac版本是1.8.0_91

感谢您花时间阅读本文。

1 个答案:

答案 0 :(得分:1)

不是错误,

List<String> name = new ArrayList();  //this instantiates a raw type of `ArrayList`

List<String> name = new ArrayList<String>(); // this instantiates an `ArrayList` with parametric type `String`

List<String> name = new ArrayList<>(); // this is a short-hand since Java 7 for the above