1

这个错误是什么意思?

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

有什么建议可以避免这种错误吗?

4

3 回答 3

3

这就是您在不指定类型的情况下使用Collections时遇到的错误。你可能有类似的东西:

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

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

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

阅读 Java泛型以获取更多信息。

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

于 2010-01-30T23:16:36.390 回答
1

首先,使用 -Xlint:unchecked 重新编译以查看问题所在。然后解决这些问题。未经检查的警告有许多潜在的高级原因。一是您没有在应有的地方提供类型参数。在某些情况下它们是不可避免的,然后您可以抑制特定警告,但这些是例外情况,必须注意不要抑制真正重要的警告。

因此,如果您对所揭示的任何特定问题有疑问,请使用 -Xlint:unchecked 重新编译并发布其他问题。

于 2010-01-30T23:12:47.440 回答
0

这是什么意思?

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

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

但是如果编译器告诉你你的代码有“未经检查或不安全的操作”,那就是说你违反了安全使用泛型的规则,你的代码可能会在意想不到的地方出现运行时类转换异常;例如,在上面的语句中,我们省略了类型转换。

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

于 2010-01-31T04:03:57.617 回答