例如:

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

当前回答

我上了两年前的课,也上了一些新课。我在Android Studio中解决了这个问题:

allprojects {

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked"
        }
    }

}

在我的项目构建中。gradle文件(Borzh解决方案)

如果还剩下一些methods:

@SuppressWarnings("unchecked")
public void myMethod()
{
    //...
}

其他回答

我上了两年前的课,也上了一些新课。我在Android Studio中解决了这个问题:

allprojects {

    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked"
        }
    }

}

在我的项目构建中。gradle文件(Borzh解决方案)

如果还剩下一些methods:

@SuppressWarnings("unchecked")
public void myMethod()
{
    //...
}

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

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

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

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

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

这个警告也可能会被引发,因为新的HashMap()或新的ArrayList()是泛型类型,必须是特定的,否则编译器将生成警告。

请确保如果您的代码包含以下内容,您必须相应更改

new HashMap() => Map<String,Object> map = new HashMap<String,Object>()
new HashMap() => Map<String,Object> map = new HashMap<>()

new ArrayList() => List<String,Object> map = new ArrayList<String,Object>()
new ArrayList() => List<String,Object> map = 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之后的第三行。