JSONObject未经检查的调用put(K,V)作为原始类型java.util.HashMap的成员 - java

下面的代码产生以下编译器警告:

JSONObject obj = new JSONObject();
obj.put("foo", "bar");

编译器消息:

未经检查的调用put(K,V)作为原始类型的成员
java.util.HashMap

我通过JSONObject.put()用值填充JSONObject,然后调用obj.toString()来获取JSON。我该如何解决以上警告(我使用-Werror进行编译)。

JSONObject来自以下库。

import org.json.simple.JSONObject;

Maven依赖项:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

参考方案

json-simple库使用旧的字节码版本:46.0​​进行编译。这是Java 1.2。 JSONObject映射扩展了java.util.HashMap,您可以直接使用java.util.HashMap的“put”方法

Java 5中添加了泛型。从Java 5开始,编译器鼓励使用泛型类型。编译器建议通过这种方式,应升级代码以使其更安全。

在这种情况下,不安全的用法来自库,您无法对其进行控制。我建议搜索该库的较新版本或切换到另一个库。

更新:,您可以尝试使用以下库作为替代:

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20180813</version>
    </dependency>

用法:

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.Arrays;
import java.util.Collections;

public class Main {

    public static void main(String[] args) {
        JSONObject obj = new JSONObject();
        obj.put("hello", "world");
        obj.put("collection", new JSONArray(Arrays.asList(1, "two", Collections.singletonMap("three", 30))));
        System.out.println("obj.toString() = " + obj.toString());
    }
}

java.util.Scanner不返回到提示 - java

import java.util.Scanner; class newClass { public static void main(String args[]) { Scanner s = new Scanner(System.in); while (s.hasNext()) { System.out.println(s.next()); } s.clos…

Java.util.zip替换单个zip文件 - java

问题我有一个现有的zip文件“main.zip”。我要替换其中的单个文件“say main.zip/foo”。我知道: http://docs.oracle.com/javase/7/docs/api/java/util/zip/ZipOutputStream.html但是,这并不能满足我的要求,因为它会创建一个新的Zip文件-因此,我还必须在main.zi…

相当于Java计时器java.util.Timer的Python - java

Java SE具有一个可伸缩的Timer对象,该对象使用一个单线程允许大量并发调度的任务(成千上万个问题不会出现)。它在内部使用二进制堆表示其任务队列。是否有Python等效项?标准或在非常流行的库中为佳。 参考方案 是的,看看sched模块。它还利用二进制堆(来自heapq)。

java.util.zip.ZipFile.close()何时会引发IOException? - java

在什么情况下java.util.zip.ZipFile.close()会抛出IOException?它的方法签名表明可以抛出该异常,但是从源代码来看,除非存在于本机代码中,否则似乎没有发生此异常的地方。在发现该异常时可以采取什么纠正措施(如果有)? 参考方案 从API docs on ZipFile.close() : 关闭此ZIP文件将关闭以前由getIn…

java.util.HashSet是否不遵循其规范? - java

作为相对的Java noob,我很困惑地发现以下内容:Point.java:public class Point { ... public boolean equals(Point other) { return x == other.x && y == other.y; } ... } Edge.java:public class Edge…