-3

ここで私が間違っていることを誰か教えてもらえますか?

(Util.parseBoolean((String)request.getAttribute("testVal"), false))

このエラーが発生しています。

java.lang.ClassCastException: java.lang.Boolean incompatible with java.lang.String

リクエストから取得した値がこれを行う場合。ありがとう

Util はリクエスト値を探すだけで、それが y または true の場合はブール値 true を返します。しかし、私の問題は、この行に行くと、そのエラーを示す例外がスローされるため、何が起こっているのかを知ることができないことです

4

2 に答える 2

1

例外が発生し、その原因を理解していない場合、適切な最初のステップは、発生している場所を正確に特定することです。その 1 行のコードで多くのことが起こっているため、エラーの原因となっている操作を正確に知ることは困難です。

例外の完全なスタック トレースを確認すると、例外が発生したときに実行パスのどこにいるかがわかるため、役立つ場合があります。

ただし、簡単なデバッグ手法は、多くの操作を含む 1 行を操作の少ない多くの行に分割し、どの行が実際に例外を生成するかを確認することです。あなたの場合、これは次のようなものかもしれません:

Object o = request.getAttribute("testVal");
String s = (String) o;
boolean b = Util.parseBoolean( s, false )

Shivan Dragon によって提案された原因が正しい場合、例外はこれら 3 行の 2 番目で発生します。

于 2012-08-29T20:56:11.727 に答える
0

ほとんどの場合、このコード:request.getAttribute("testVal")ブール値を返します。これは文字列にキャストできないため、(実行時) 例外が発生します。

また:

  • リクエスト属性「testVal」にブール値( のようなものrequest.setAttribute("testVal", Boolean.FALSE))を設定し、値を文字列に置き換えるコードを確認します

また

  • コード内で値を文字列にキャストしないでください。また、文字列からブール値を構築するためのユーティリティ クラスと思われるものを使用しないでください (*)

(*) ところで、Boolean クラスは孤独な自分ですべてを行うことができます。そのための独自のライブラリを作成する必要はありません。

http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Boolean.html#valueOf(java.lang.String )

于 2012-08-29T20:45:27.170 に答える