1
這裏是一個非常簡單的情況:我試圖鑄造對象類型到一個基本是這樣的:自動裝箱/開箱而鑄造整數使用到int「投」方法
Object object = Integer.valueOf(1234);
int result1 = int.class.cast(object); //throws ClassCastException: Cannot convert java.lang.integer to int
int result2 = (int)object; //works fine
這是的源代碼「班級」的鑄造方法
public T cast(Object obj) {
if (obj != null && !isInstance(obj))
throw new ClassCastException(cannotCastMsg(obj));
return (T) obj;
}
private String cannotCastMsg(Object obj) {
return "Cannot cast " + obj.getClass().getName() + " to " + getName();
}
爲什麼會發生這種情況?其他基元也一樣。
那麼,'isInstance'的文檔指定:「如果這個Class對象表示一個基本類型,則此方法返回false。」所以這並不奇怪 - 但是'cast'文檔應該說它對於原始類型總是會失敗。 –
所以我不應該對基元使用強制轉換方法,而是直接使用(int)強制轉換它? –
@AnmolGupta:是的,基本上。 –