ClassCast异常无法将String强制转换为Boolean

时间:2012-05-17 00:54:08

标签: java casting

  

可能重复:
  How to get Boolean value from Object

我正在尝试获取Boolean Object的{​​{1}}值,并在此处获取newValue。 虽然,我输入它为ClassCastException为什么我会得到Boolean

exception

你能解释一下吗?谢谢。

3 个答案:

答案 0 :(得分:6)

StringBoolean是完全不同的类,因此您无法在它们之间进行投射。您需要使用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不会自动将对象转换为不同的类型,只能通过封装器和原始类型之间的自动装箱进行转换。