我遇到了一个问题,我的代码在NetBeans中编译并运行良好,但是当我尝试使用javac使用命令行进行编译时,我得到一个未经检查的警告错误,但它失败了。当我使用-Xlint进行编译时:取消选中,我会得到一个错误的详细描述,指出问题所在。
这里我没有正确使用泛型,我的问题是:
List<String> name = new ArrayList();
添加菱形运算符后,代码现在可以很好地编译进出IDE
List<String> name = new ArrayList<>();
似乎在第一个例子中我必须使用cast,而第二个例子使用泛型。
我的问题是:这是IDE中的错误吗? NetBeans似乎可以捕获各种其他错误,但为什么我的代码在IDE中编译得很好而不能在命令行中编译?很明显我是编程的新手,所以如果我没有提出任何重要的问题,请原谅我。
接近回答我的问题的信息: The Java™ Tutorials, What is the point of the diamond operator in Java 7?(stackOverflow)
我抬头找到了Bug 250587,但不一样。 此外,我是最新的NetBeans上没有可用的更新。我的javac版本是1.8.0_91
感谢您花时间阅读本文。
答案 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