我有现有的代码使用org.json.JSONObject
的迭代器
JSONObject obj = new JSONObject();
obj.put("key1", "value1");
obj.put("key2", "value2");
Iterator keys = obj.keys();
...
有编译警告
Iterator is a raw type. References to generic type Iterator<E> should be parameterized
我可以更新到通用版本:
Iterator<?> keys = obj.keys();
但有没有办法“泛化”JSONObject
with String
keys?
I find 这个答案 https://stackoverflow.com/questions/16415436/json-and-generics-in-java-type-safety-warning但它的建议没有编译
JSONObject<String,Object> obj=new JSONObject<String,Object>();
EDIT
Using Iterator<String> keys = obj.keys();
我收到类型安全警告:
Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator<String>
另外,使用 Eclipse Infer 泛型不会执行任何代码更改
您提供的链接的答案是使用与您正在使用的不同的类。如果你看一下source https://github.com/stleary/JSON-java/blob/master/JSONObject.java for org.json.JSONObject
你会发现以下内容:
public Iterator<String> keys() {
return this.keySet().iterator();
}
这意味着您可以编写以下代码:
JSONObject obj = new JSONObject();
obj.put("key1", "value1");
obj.put("key2", "value2");
Iterator<String> keys = obj.keys();
while(keys.hasNext()){
System.out.println(keys.next());
}
它将生成以下输出:
key1
key2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)