有人可以告诉我这里我做错了吗,
(Util.parseBoolean((String)request.getAttribute("testVal"), false))
我收到此错误。
java.lang.ClassCastException: java.lang.Boolean incompatible with java.lang.String
如果我从请求中得到什么价值就可以做到这一点。感谢
Util只查找请求值,如果是y或者true,则返回布尔值true。但我的问题是,当它出现在这一行时它抛出异常说错误所以我无法知道发生了什么
答案 0 :(得分:1)
当你得到一个例外并且你不明白是什么导致它时,一个好的第一步就是准确地隔离它发生的位置。在这一行代码中发生了很多事情,因此很难确切知道导致错误的操作。
查看异常的完整堆栈跟踪可能会有所帮助,因为它会在发生异常时了解您在执行路径中的位置。
然而,一种简单的调试技术是将具有许多操作的那一行分解为具有较少操作的多行,并查看实际生成异常的行。在你的情况下,这可能是这样的:
Object o = request.getAttribute("testVal");
String s = (String) o;
boolean b = Util.parseBoolean( s, false )
如果Shivan Dragon建议的原因是正确的,则在这三行中的第二行会发生异常。
答案 1 :(得分:0)
很可能这段代码:request.getAttribute("testVal")
返回一个布尔值,它不能转换为String,因此是(运行时)异常。
或者:
request.setAttribute("testVal", Boolean.FALSE)
)填充请求属性“testVal”的代码,并用String替换值或
(*)其中,btw,布尔类可以通过其寂寞的自我完成所有操作,无需为此创建自己的库:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Boolean.html#valueOf(java.lang.String)