Long 不会转换为 java 中的字符串

Long won't convert to a string in java

我正在尝试将长整数转换为整数,但似乎没有任何效果,不起作用的代码片段是 ((int)jo.get("gold"))

完整的代码行是gamePlayer = new Player(((double) jo.get("hp")), ((double) jo.get("maxHp")), ((int) jo.get("gold")), true, jo.get("name").toString());

一旦我们去掉 Java 正在做的装箱和拆箱,这就是你正在做的。

(java.lang.Integer)jo.get("hp")

其中 jo.get("hp") 是一个对象,其运行时类型(显然)是 java.lang.Long。现在,它 看起来 就像你在无害地将 long 转换为 int,但那是因为它都隐藏在 autoboxing 后面。实际上,您正在将 Object 转换为 而不是 IntegerInteger。它与数值类型无关;这只是一个无效的沮丧。

要解决眼前的问题,您需要先转换为正确的运行时类型,然后让自动装箱从那里获取它。

(long)(Integer)jo.get("hp")

我找不到很多关于您正在使用的 org.json.simple.JSONObject class 的文档,但我猜它写得不好并且有 .get return Object,因此您感到困惑。 Java 内置了 official JSON support,所以我建议使用 class。它是强类型的,并且会比您现在使用的库更好地为您进行类型检查。