我有使用org.json.JSONObject的Iterator的现有代码
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 is a raw type. References to generic type Iterator<E> should be
parameterized
我可以更新为通用版本:
Iterator<?> keys = obj.keys();
但是,是不是有办法“泛型化” JSONObject带String钥匙?
JSONObject
String
我找到了这个答案,但是它的建议没有编译
JSONObject<String,Object> obj=new JSONObject<String,Object>();
编辑
使用Iterator<String> keys = obj.keys();我收到类型安全警告:
Iterator<String> keys = obj.keys();
Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator
Type safety: The expression of type Iterator needs unchecked conversion
to conform to Iterator
同样使用Eclipse Infer泛型也不会执行任何代码更改
您提供的链接答案所使用的类别与您使用的类别不同。如果您查看源代码,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