java - Diamond 运算符、泛型和编译问题

标签 java netbeans

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

在这里,我无法正确使用泛型,这就是我的问题所在: List<String> name = new ArrayList();

添加菱形运算符后,代码现在可以在 IDE 内和外正常编译
List<String> name = new ArrayList<>();

看来在第一个示例中我必须使用强制转换,而第二个示例则使用泛型。

我的问题是:这是 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

感谢您花时间阅读本文。

最佳答案

不是错误,

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

关于java - Diamond 运算符、泛型和编译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38306236/

相关文章:

java - 如果 compareTo() 返回 0,为什么暗示对象相等?

java - 为什么我的排队任务没有被线程池中的所有线程处理?

Java8 Stream 的文件,如何控制文件的关闭?

Java 关于@Override

java - Hibernate 新手在 netbeans 中的帮助

Java 将用户重定向到 java 更新页面

java - 使用 servlet 将电子邮件作为附件发送,附件应该只有文件名

java - 如何从 Midlet 运行 java 应用程序

c++ - 加载c++ dll文件时如何修复EXCEPTION_ACCESS_VIOLATION?

java - Netbeans 类路径问题的 JaseperReports 插件