Java 泛化JSONObject字符串键

Java 泛化JSONObject字符串键,java,json,eclipse,generics,compiler-warnings,Java,Json,Eclipse,Generics,Compiler Warnings,我有使用org.json.JSONObject迭代器的现有代码 JSONObject obj = new JSONObject(); obj.put("key1", "value1"); obj.put("key2", "value2"); Iterator keys = obj.keys(); ... 带有编译警告 编辑 使用迭代器keys=obj.keys()我收到类型安全警告: 类型安全性:类型迭代器的表达式需要未经检查的转换才能符合迭代器 另外,使用Eclipse推断泛型不会执行任何

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

JSONObject obj = new JSONObject();
obj.put("key1", "value1");
obj.put("key2", "value2");
Iterator keys = obj.keys();
...
带有编译警告

编辑

使用迭代器keys=obj.keys()我收到类型安全警告:

类型安全性:类型迭代器的表达式需要未经检查的转换才能符合迭代器

另外,使用Eclipse推断泛型不会执行任何代码更改

您提供的链接所指向的答案使用的类与您使用的类不同。如果查看for
org.json.JSONObject
,您会发现以下内容:

public Iterator<String> keys() {
    return this.keySet().iterator();
}

您使用的是
org.json.JSONObject
还是
org.json.simple.JSONObject
?@D.B.
org.json.JSONObject
但是我得到了一个警告
类型安全:类型迭代器的表达式需要未经检查的转换才能符合迭代器
我使用的是最新版本-org.json:json:20180813,我没有收到任何这样的警告。请提供有关您的设置的更多详细信息。这是Eclipse中的一个警告,基本上您可以强制转换为字符串,尽管这不安全,但您不能使用字符串键定义JSONObject。顺便说一句,你投了反对票吗?@user7294900。答案中给出的代码不应引起此类警告。请升级您的JSON java依赖项。
Iterator<?> keys = obj.keys();
JSONObject<String,Object> obj=new JSONObject<String,Object>();
Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator<String>
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