一尘不染

生成JSONObject字符串键

java

我有使用org.json.JSONObject的Iterator的现有代码

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

但是,是不是有办法“泛型化” JSONObjectString钥匙?

我找到了这个答案,但是它的建议没有编译

JSONObject<String,Object> obj=new JSONObject<String,Object>();

编辑

使用Iterator<String> keys = obj.keys();我收到类型安全警告:

Type safety: The expression of type Iterator needs unchecked conversion

to conform to Iterator

同样使用Eclipse Infer泛型也不会执行任何代码更改


阅读 330

收藏
2020-12-03

共1个答案

一尘不染

您提供的链接答案所使用的类别与您使用的类别不同。如果您查看源代码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
2020-12-03