2016-11-01 89 views
1

我有這段代碼給了我一個錯誤?如何將對象轉換爲長數據類型java

public int part(Object key) { 
    long clientId = (long) key; 
    ... 
} 

下面是錯誤:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long 

不知道爲什麼它會拋出異常。

+4

'java.lang.Integer' _cannot_被轉換爲'java.lang.Long'。 –

回答

4

正如在評論中已經解釋的那樣,即使原語本身允許強制轉換,Java也不允許將一個基本包裝類型轉換爲另一種類型的原語。

你的異常stacktrace顯示key參數是一個Integer對象。如果是這樣,那麼簡單地使用專門爲這種類型的轉換的創建整型的方法:

long clientId = ((Number) key).longValue(); 

你最好非常肯定的說,關鍵是總是數量的目的,是不爲空的這個工作。在調用此方法之前,您可能需要測試null。

+1

謝謝你做的氣墊船。我被捆綁了一段時間。 –

1

你不能投IntegerLong,即使你可以轉換從intlong。這會爲你工作:如果整數爲null

Long clientId = new Long(key) 

NPE被拋出。儘管如此,我將把錯誤處理留給你。 :)

或者,你可以使用:

Long clientId = Long.valueOf(key.longValue()); 
相關問題