可能重複:
How to get Boolean value from ObjectClassCast異常不能施放字符串布爾
我想獲得的Object
newValue
的Boolean
價值,並得到ClassCastException
這裏。 雖然,我輸入它爲Boolean
爲什麼我得到這exception
?
Boolean changedValue=!((Boolean)newValue);
請您解釋一下。謝謝。
可能重複:
How to get Boolean value from ObjectClassCast異常不能施放字符串布爾
我想獲得的Object
newValue
的Boolean
價值,並得到ClassCastException
這裏。 雖然,我輸入它爲Boolean
爲什麼我得到這exception
?
Boolean changedValue=!((Boolean)newValue);
請您解釋一下。謝謝。
A String
和Boolean
是完全不同的類,所以您不能在它們之間進行投射。您需要使用Boolean.valueOf()
從String.
獲得Boolean
。
它不像C或C++,你可以在其中強制任何東西施放任何東西(當然,如果你不小心,你可能會遇到很多麻煩,因爲不能保證任意施放會有任何意義)。
而且它也不像C++那樣,如果定義了類型轉換運算符,則該類型轉換將轉換爲其中一個轉換運算符的自動調用。 Java中的對象類型之間沒有自動轉換。
但newValue的類型爲Object。 –
@RandonP:任何對象都可以向下轉換爲「對象」 - 但是你不能向任何東西上傳「對象」。 –
如果這是一個字符串值,您將需要使用Boolean.valueOf(String)
方法。 Java不會將對象自動轉換爲不同類型,只能通過包裝器和基本類型之間的自動裝箱轉換。
Java是強類型語言。如果newValue
不是Boolean
對象,那麼如果您嘗試將其轉換爲Boolean
,則會得到ClassCastException
。如果newValue
是String
表示Boolean
值,你可以試試下面的代碼:
boolean changedValue = Boolean.parseBoolean(newValue)
參考:http://docs.oracle.com/javase/6/docs/api/java/lang/Boolean.html#parseBoolean%28java.lang.String%29
沒有String.parseBoolean方法。 –
@RandonP:見編輯。 –
對不起。 Meant Boolean.parseBoolean(newValue)。感謝Greg的編輯。 – InPursuit
爲什麼你認爲你將能夠投出字符串到布爾? – Falmarri