gpt4 book ai didi

java - 如何避免本例中的 "Recompile with -xLint:unchecked"

转载 作者:行者123 更新时间:2023-12-01 11:03:18 27 4
gpt4 key购买 nike

当我编译我的类时,我收到这些警告:

Note: JSONLoader.java uses unchecked or unsafe operations

Note: Recompile with -xLint:unchecked

该类非常简单:

class JSONLoader<T>{
public T loads(String file_name){
JSONParser parser = new JSONParser();
Object obj = null;
try{
obj = parser.parse(new FileReader(file_name));
}
catch(Exception e){
e.printStackTrace();
}
return (T) obj;
}
}

我应该补充一点,此类应该返回 JSONObjectJSONArray (取决于文件的内容),并且这些对象类型不兼容。

最佳答案

问题是,通过您的方法,您可以使用 JSONObject x = loader.loads(filename) 并且文件实际上返回一个 JSONArray。在您的情况下,T 的类型是从返回值的分配中推断出来的,并且此信息将在运行时丢失。

我想说你最好添加两个方法,将两种类型之一定义为返回值,并检查文件内容是否匹配(你不能用你的方法这样做,因为你无法确定T)。

示例:

JSONObject loadObject( String filename ) {
...

Object obj = parser.parse( xxx );
if( obj instanceof JSONObject ) {
return (JSONObject)obj;
}
else {
throw new IllegalArgumentException( "json root is not a single object");
}
}

JSONArray loadArray(String filename) {
//similar to above
}

或者,例如如果您想要一个方法,您可以创建一个允许两种类型之一的包装器(例如通过构造函数重载)并将检查放入该包装器中(或提供诸如 isArray() 等之类的东西) .).

关于java - 如何避免本例中的 "Recompile with -xLint:unchecked",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33167790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com