例如:

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

当前回答

你可以保持它的一般形式,并将其写成:

// list 2 is made generic and can store any type of Object
ArrayList<Object> list2 = new ArrayList<Object>();

将数组列表的类型设置为对象使我们能够存储任何类型的数据。你不需要使用-Xlint或其他任何东西。

其他回答

例如,当你调用一个返回泛型集合的函数时,你不自己指定泛型参数。

对于一个函数

List<String> getNames()


List names = obj.getNames();

将生成此错误。

要解它,你只需要加上参数

List<String> names = obj.getNames();

如果你在使用没有类型说明符的集合(例如,Arraylist()而不是Arraylist <String>()),这将在Java 5或更高版本中出现。这意味着编译器不能检查您是否使用泛型以类型安全的方式使用集合。

要消除警告,需要明确在集合中存储的对象类型。所以,与其

List myList = new ArrayList();

use

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

在Java 7中,你可以通过使用类型推断来缩短泛型实例化。

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

解决方案是在<>中使用特定的类型,如ArrayList<File>。

例子:

File curfolder = new File( "C:\\Users\\username\\Desktop");
File[] file = curfolder.listFiles();
ArrayList filename = Arrays.asList(file);

以上代码生成警告,因为ArrayList不是特定类型。

File curfolder = new File( "C:\\Users\\username\\Desktop");
File[] file = curfolder.listFiles();
ArrayList<File> filename = Arrays.asList(file);

上面的代码就可以了。唯一的变化是在ArrayList之后的第三行。

我有ArrayList<Map<String,对象>> items = (ArrayList<Map<String,对象>>)值;因为value是一个复杂的结构(我想要清除JSON),可以在数字、布尔值、字符串、数组上发生任何组合。所以,我使用了@Dan Dyer的解决方案:

@SuppressWarnings("unchecked")
ArrayList<Map<String, Object>> items = (ArrayList<Map<String, Object>>) value;

你可以保持它的一般形式,并将其写成:

// list 2 is made generic and can store any type of Object
ArrayList<Object> list2 = new ArrayList<Object>();

将数组列表的类型设置为对象使我们能够存储任何类型的数据。你不需要使用-Xlint或其他任何东西。