我试图从 JSONObject 获取一些值到 HashMap 中,但我在 for 循环的最后一行不断收到 ClassCastException。
Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
我尝试将 mapEntry.getValue() 显式转换为整数,但我不断收到相同的错误。如果我运行没有最后一行的代码,我会得到以下输出:
key: peter value: 33
key: somekey value: 11
key: steve value: 38
key: guy value: 22
key: name value: 54
所以我可以看到mapEntry.getValue()似乎打印整数,或者至少我应该能够转换为整数的数字。
JSONObject json = getJsonFromFile(filePath);
HashMap<String, Integer> entries = new HashMap<>();
for (Object obj : json.entrySet()) {
Entry<String, Integer> mapEntry = (Entry<String, Integer>) obj;
System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
entries.put(mapEntry.getKey(), mapEntry.getValue());
}
最佳答案
如果你尝试这样做:
JSONObject json = getJsonFromFile(filePath);
HashMap<String, Number> entries = new HashMap<>();
for (Object obj : json.entrySet()) {
Entry<String, Number> mapEntry = (Entry<String, Number>) obj;
System.out.println("key: " + mapEntry.getKey() + " value: " + mapEntry.getValue());
entries.put(mapEntry.getKey(), mapEntry.getValue());
}
Number
是 Integer
和 Long
的父类(super class),它应该可以正常编译。
关于java - 尝试将 Object 转换为 MapEntry 时出现 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39831716/