我正在尝试获取Boolean
Object
的{{1}}值,并在此处获取newValue
。
虽然,我输入它为ClassCastException
为什么我会得到Boolean
?
exception
你能解释一下吗?谢谢。
答案 0 :(得分:6)
String
和Boolean
是完全不同的类,因此您无法在它们之间进行投射。您需要使用Boolean.valueOf()
从Boolean
获取String.
。
它不像C或C ++,你可以强行把任何东西投射到任何东西(当然,如果你不小心,你可能会遇到很多麻烦,因为不能保证任意演员都有任何意义)
并且它也不像C ++,如果定义了类型转换运算符,则转换将变成对其中一个转换运算符的自动调用。 Java中的对象类型之间没有自动转换。
答案 1 :(得分:2)
Java是一种强类型语言。如果newValue
不是Boolean
对象,那么如果您尝试将其转换为ClassCastException
,则会获得Boolean
。如果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
答案 2 :(得分:1)
如果这是一个字符串值,您将需要使用Boolean.valueOf(String)
方法。 Java不会自动将对象转换为不同的类型,只能通过封装器和原始类型之间的自动装箱进行转换。