我有這段代碼給了我一個錯誤?如何將對象轉換爲長數據類型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也不允許將一個基本包裝類型轉換爲另一種類型的原語。
你的異常stacktrace顯示key參數是一個Integer對象。如果是這樣,那麼簡單地使用專門爲這種類型的轉換的創建整型的方法:
long clientId = ((Number) key).longValue();
你最好非常肯定的說,關鍵是總是數量的目的,是不爲空的這個工作。在調用此方法之前,您可能需要測試null。
謝謝你做的氣墊船。我被捆綁了一段時間。 –
你不能投Integer
到Long
,即使你可以轉換從int
到long
。這會爲你工作:如果整數爲null
Long clientId = new Long(key)
NPE被拋出。儘管如此,我將把錯誤處理留給你。 :)
或者,你可以使用:
Long clientId = Long.valueOf(key.longValue());
'java.lang.Integer' _cannot_被轉換爲'java.lang.Long'。 –