下面的代码产生以下编译器警告:
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不返回到提示 - javaimport 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 - javaJava 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…