2

可能重复:
如何从对象中获取布尔值

我正在努力获得Boolean价值Object newValue并到达ClassCastException这里。虽然,我输入强制转换Boolean为什么我会得到这个exception

Boolean changedValue=!((Boolean)newValue);

你能解释一下吗。谢谢你。

4

3 回答 3

8

AString和 aBoolean是完全不同的类,所以你不能在它们之间转换。您需要使用Boolean.valueOf()Boolean.String.

它不像 C 或 C++,你可以强制将任何东西强制转换为任何东西(当然,如果你不小心,这样做会遇到很多麻烦,因为不能保证任意强制转换会有任何意义)。

而且它也不像 C++ 那样,如果定义了类型转换运算符,则强制转换将变成对转换运算符之一的自动调用。Java 中的对象类型之间没有自动转换。

于 2012-05-17T00:56:27.377 回答
3

Java 是一种强类型语言。如果newValue不是Boolean对象,那么ClassCastException如果您尝试将其转换为 a ,您将得到 a Boolean。如果newValueString表示Boolean值,您可以尝试以下代码:

boolean changedValue = Boolean.parseBoolean( newValue )

参考:http ://docs.oracle.com/javase/6/docs/api/java/lang/Boolean.html#parseBoolean%28java.lang.String%29

于 2012-05-17T00:56:59.517 回答
1

如果那是一个字符串值,您将需要使用Boolean.valueOf(String)方法。Java 不会自动将对象转换为不同的类型,只会通过包装器和原始类型之间的自动装箱进行转换。

于 2012-05-17T00:56:47.567 回答