Long 不会转换为 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,但这是因为它都隐藏在自动装箱之后。实际上,您将Object(而不是)和Integer强制转换为Integer。它与数值类型无关;这只是一个无效的向下转换。

要立即解决这个问题,您需要首先转换为正确的运行时类型,然后让自动装箱从那里进行转换。

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

我找不到关于你正在使用的org.json.simple.JSONObject类的很多文档,但我的猜测是它写得很差,并且有.get返回Object,因此你的困惑。Java有官方的内置JSON支持,所以我建议使用这个类。它是强类型的,可以比你现在使用的库更好地为你做类型检查。

最新更新