0

コードブロックに従います。

Map<String, Object> personDetailMap = new HashMap<String, Object>();
personDetailMap.put("name", "isuru");
personDetailMap.put("is-male", true);
(String)personDetailMap.get("is-male");

最終ステートメントにより例外が発生します: ClassCastException は Boolean を String にキャストできません

私の質問は、 personDetailMap が Class Object のオブジェクトを返し、なぜ Boolean のキャスト例外を String に与えるのかということです。

4

1 に答える 1

3

personDetailMap.put("is-male", true);Booleanプリミティブbooleanをオブジェクトに ボックス化することによってを格納します。personDetailMap.get("is-male");同じを返しますBoolean

次に、これら2つのクラスには関係がありませんが、Booleanをにキャストしようとします。Stringキャストが失敗し、その例外が発生します。

このステートメント(String) anObject;、が文字列の場合にのみ機能します(文字列は最終であり、サブクラスはありません)。anObject

実際にブール値を文字列に変換する場合は、次の方法を使用できます。

String boolStr = personDetailMap.get("is-male").toString(); // boolStr = "true"
于 2012-05-31T11:46:31.647 に答える