我应该在我的网络服务中收到长整数。
long ipInt = (long) obj.get("ipInt");
当我测试我的程序并输入 ipInt 值 = 2886872928 时,它给了我成功。但是,当我测试我的程序并将 ipInt 值设置为 167844168 时,它给我错误:
java.lang.ClassCastException: java.lang.Integer 无法转换为 java.lang.Long
错误指向上面的代码。
仅供参考,我的数据是 JSON 格式:
{
"uuID": "user001",
"ipInt": 16744168,
"latiTude": 0,
"longiTude": 0,
}
有什么建议可以确保我的代码能够同时接收 ipInteger 值吗?
原文由 inayzi 发布,翻译遵循 CC BY-SA 4.0 许可协议
Integer
和Long
都是Number
的子类,所以我怀疑你可以使用:无论
obj.get("ipInt")
返回的值是Integer
参考还是Long
参考,这都应该起作用。它的缺点是,如果ipInt
已在 JSON 中指定为浮点数(例如"ipInt": 1.5
),它 也会 静默继续,您可能想要抛出异常。您 可以 使用
instanceof
来检查Long
和Integer
具体来说,但这会非常难看。