私にこのエラーコードはありますか?以下はオブジェクトを長いデータ型に変換する方法Java
public int part(Object key) {
long clientId = (long) key;
...
}
エラーです:それは例外をスローする理由
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
わかりません。
私にこのエラーコードはありますか?以下はオブジェクトを長いデータ型に変換する方法Java
public int part(Object key) {
long clientId = (long) key;
...
}
エラーです:それは例外をスローする理由
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
わかりません。
コメントで説明したように、Javaではプリミティブ自体でキャストが許可されていても、1つのプリミティブラッパータイプを別のタイプのプリミティブにキャストすることはできません。
例外スタックトレースは、keyパラメータがIntegerオブジェクトであることを示しています。そう、単に変換のこのタイプのために特別に作成された整数のメソッドを使用する場合:
long clientId = ((Number) key).longValue();
あなたはより良い鍵が常に Numberオブジェクトであり、これが機能するためにnullでないことを非常に確認してくださいと思います。このメソッドを呼び出す前にnullをテストする必要があるかもしれません。
ホバークラフトをしてくれてありがとう。私はしばらく縛られていた。 –
あなたはint
からlong
に変換することができていても、Long
にInteger
をキャストすることはできません。
Long clientId = new Long(key)
Integerがnullの場合、NPEがスローされます。私はあなたにエラー処理を残します。あなたが使用することができます:)
また、:
Long clientId = Long.valueOf(key.longValue());
を 'java.lang.Integer'はjava.lang.Long''にキャストすること_cannot_。 –