例如:
javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
例如:
javac Foo.java
Note: Foo.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
当前回答
解决方案是在<>中使用特定的类型,如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文件来了解这个错误是在哪里产生的。
“未检查或不安全操作”警告是在java添加泛型时添加的,如果我没记错的话。它通常要求你以这样或那样的方式更明确地说明类型。
为例。foo = new ArrayList();触发该警告,因为javac正在寻找ArrayList<String> foo = new ArrayList<String>();
我有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或其他任何东西。
这个警告也可能会被引发,因为新的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<>()