Gson 在使用 hashmap 时抛出错误
Gson throwing an error when using a hashmap
我正在尝试将 2 个 Integer[] 值放入 HashMap,但是我的 maven 依赖项中的 gson 库正在参与其中,我无法理解为什么...
在下面的代码中,“x”和“z”都是来自我正在使用的 API 方法的整数,肯定是 return 整数,并且通过方法中的参数和 Claims.connectionMap 是 public 并且在主要 class.
中是静态的
Integer[] set = {x, z};
Claims.connectionMap.put(set, set); // LINE 110
这是连接映射:
public static Map<Integer[], Integer[]> connectionMap = new HashMap<>();
这个hashmap在服务器每次启动和停止时导出和导入,但除此之外,我不能完全理解为什么gson会用这个代码做任何事情,一个论坛post我在其他地方读到它可能是一个构建时错误,但它导入到代码中就好了(据我所知):这是要导入的代码
Map<Integer[], Integer[]> map;
// a few lines later
map = gson.fromJson(new String(array), Map.class);
但悲剧的是,这个错误出现在第一个代码示例的第110行
31.01 10:19:23 [Server] INFO Caused by: java.lang.ClassCastException: [Ljava.lang.Integer; is not Comparable
31.01 10:19:23 [Server] INFO at com.google.gson.internal.LinkedTreeMap.find(LinkedTreeMap.java:164) ~[patched_1.16.4.jar:git-Paper-416]
31.01 10:19:23 [Server] INFO at com.google.gson.internal.LinkedTreeMap.put(LinkedTreeMap.java:94) ~[patched_1.16.4.jar:git-Paper-416]
31.01 10:19:23 [Server] INFO at com.eejay.towny.Towny.addConnection(Towny.java:110)
任何帮助将不胜感激,非常感谢:)
Gson 正在反序列化 Map<Integer[], Integer[]> map
使用它自己的 LinkedTreeMap
implementation which requires keys to implement Comparable
interface。
Integer[]
是一个数组,因此它没有实现 Comparable
接口,不能用作键。我不确定为什么要使用数组作为键,因为 JSON 通常使用 String
键。
我正在尝试将 2 个 Integer[] 值放入 HashMap,但是我的 maven 依赖项中的 gson 库正在参与其中,我无法理解为什么...
在下面的代码中,“x”和“z”都是来自我正在使用的 API 方法的整数,肯定是 return 整数,并且通过方法中的参数和 Claims.connectionMap 是 public 并且在主要 class.
中是静态的Integer[] set = {x, z};
Claims.connectionMap.put(set, set); // LINE 110
这是连接映射:
public static Map<Integer[], Integer[]> connectionMap = new HashMap<>();
这个hashmap在服务器每次启动和停止时导出和导入,但除此之外,我不能完全理解为什么gson会用这个代码做任何事情,一个论坛post我在其他地方读到它可能是一个构建时错误,但它导入到代码中就好了(据我所知):这是要导入的代码
Map<Integer[], Integer[]> map;
// a few lines later
map = gson.fromJson(new String(array), Map.class);
但悲剧的是,这个错误出现在第一个代码示例的第110行
31.01 10:19:23 [Server] INFO Caused by: java.lang.ClassCastException: [Ljava.lang.Integer; is not Comparable
31.01 10:19:23 [Server] INFO at com.google.gson.internal.LinkedTreeMap.find(LinkedTreeMap.java:164) ~[patched_1.16.4.jar:git-Paper-416]
31.01 10:19:23 [Server] INFO at com.google.gson.internal.LinkedTreeMap.put(LinkedTreeMap.java:94) ~[patched_1.16.4.jar:git-Paper-416]
31.01 10:19:23 [Server] INFO at com.eejay.towny.Towny.addConnection(Towny.java:110)
任何帮助将不胜感激,非常感谢:)
Gson 正在反序列化 Map<Integer[], Integer[]> map
使用它自己的 LinkedTreeMap
implementation which requires keys to implement Comparable
interface。
Integer[]
是一个数组,因此它没有实现 Comparable
接口,不能用作键。我不确定为什么要使用数组作为键,因为 JSON 通常使用 String
键。