可能重复:
如何从对象中获取布尔值
我正在努力获得Boolean
价值Object
newValue
并到达ClassCastException
这里。虽然,我输入强制转换Boolean
为什么我会得到这个exception
?
Boolean changedValue=!((Boolean)newValue);
你能解释一下吗。谢谢你。
可能重复:
如何从对象中获取布尔值
我正在努力获得Boolean
价值Object
newValue
并到达ClassCastException
这里。虽然,我输入强制转换Boolean
为什么我会得到这个exception
?
Boolean changedValue=!((Boolean)newValue);
你能解释一下吗。谢谢你。
AString
和 aBoolean
是完全不同的类,所以你不能在它们之间转换。您需要使用Boolean.valueOf()
从Boolean
.String.
它不像 C 或 C++,你可以强制将任何东西强制转换为任何东西(当然,如果你不小心,这样做会遇到很多麻烦,因为不能保证任意强制转换会有任何意义)。
而且它也不像 C++ 那样,如果定义了类型转换运算符,则强制转换将变成对转换运算符之一的自动调用。Java 中的对象类型之间没有自动转换。
Java 是一种强类型语言。如果newValue
不是Boolean
对象,那么ClassCastException
如果您尝试将其转换为 a ,您将得到 a 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
如果那是一个字符串值,您将需要使用Boolean.valueOf(String)
方法。Java 不会自动将对象转换为不同的类型,只会通过包装器和原始类型之间的自动装箱进行转换。