不安全操作编译器错误意味着什么?

时间:2010-01-30 23:08:18

标签: java compiler-errors syntax-error

这个错误是什么意思?

Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

有关如何避免此类错误的任何建议吗?

3 个答案:

答案 0 :(得分:3)

这是您在未指定类型的情况下使用Collections时出现的错误。你可能有类似的东西:

ArrayList myList = new ArrayList(); // or some other Collection class

如果是这种情况,您需要更改它以指定要存储的对象类型。例如:

ArrayList<String> myList = new ArrayList<String>();

阅读Java Generics以获取更多信息。

这是我最好的猜测,但没有看到您的代码和完整的错误消息。这条消息可能还有其他原因,这只是我之前看过的那个问题。

答案 1 :(得分:1)

首先,使用-Xlint重新编译:取消选中以查看问题所在。然后解决这些问题。未经检查的警告有许多潜在的高级别原因。一个是你没有提供你应该拥有的类型参数。在某些情况下,它们是不可避免的,然后您可以取消特定警告,但这些都是例外,必须注意您不要压制非常重要的警告。

使用-Xlint重新编译:如果您遇到任何特定问题时遇到问题,请取消选中并发布其他问题。

答案 2 :(得分:0)

  

这是什么意思?

Java泛型允许您编写如下内容:

List<String> l = ...;
String s = l.get(0);  // note there is no explicit typecast.

但是如果编译器告诉你代码有“未经检查或不安全的操作”,那就说你已经破坏了安全使用泛型的规则,而你的代码可能会给出运行时类强制转换异常在意外的地方;例如在上面的陈述中,我们省略了类型转换。

有一些事情会导致编译器抱怨未经检查或不安全的操作,并且每个操作都需要不同的补救措施。执行编译器告诉您的操作并使用-Xlint选项运行它。