inayzi:
私は自分のWebサービスでの長い整数を受け取ることになっています。
long ipInt = (long) obj.get("ipInt");
私は私のプログラムをテストし、ipInt値= 2886872928を入れたとき、それは私に成功を与えます。私は私のプログラムをテストし、ipInt値= 167844168を置くときしかし、それは私にエラーを与えます:
java.lang.ClassCastExceptionが:java.lang.Integerのがjava.lang.Longのにキャストすることはできません
エラーは、上記のコードをポイントしています。
FYI、私のデータはJSON形式であります:
{
"uuID": "user001",
"ipInt": 16744168,
"latiTude": 0,
"longiTude": 0,
}
私は両方のipInteger値を受け取ることができる私のコードを確保することができるように任意の提案はありますか?
ジョンスキート:
両方Integer
とLong
のサブクラスですNumber
ので、私はあなたが使用することができます疑いがあります、:
long ipInt = ((Number) obj.get("ipInt")).longValue();
すなわち、によって返される値かどうか動作するはずobj.get("ipInt")
であるInteger
基準又はLong
参照。それはすることが欠点があるにもあれば、静か続けるipInt
浮動小数点数(例えばとして指定されている"ipInt": 1.5
あなたの代わりに例外をスローする場合がありますJSON、中に)。
あなたは可能性が使用instanceof
をチェックする代わりに、Long
とInteger
具体的には、それはかなり醜いだろう。