例如:

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

当前回答

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

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

List myList = new ArrayList();

use

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

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

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

其他回答

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

对于一个函数

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<>();

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

allprojects {

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

}

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

如果还剩下一些methods:

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

解决方案是在<>中使用特定的类型,如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之后的第三行。

对于Android Studio,你需要添加:

allprojects {

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

    // ...
}

在项目的构建中。Gradle文件来了解这个错误是在哪里产生的。