0

同様の質問があることは知っていますが、どれも私にとって役に立ちます(またはそう思われます)。

次のステートメントを実行する必要があります。

ClassA a = new ClassA(); 
String JSON_str = objectMapper.writeValueAsString(a);

ClassA a1 = (ClassA)objectMapper.readValue(JSON_str, ClassA.class);
ClassB b = (ClassB)a1.getAttribute1();

上記のコードを実行すると、次のエラーが表示されます。

" java.util.LinkedHashMap は ClassB にキャストできません"

メソッド getAttribute1 は、"Object attribute1" として定義された ClassA attribute1 を返します。実行時にクラス B のオブジェクトで初期化されます。

助けてください^^。

前もって感謝します。レオナルド

4

1 に答える 1

0

エラーが示すように、a1.getAttribute1()タイプのオブジェクトを返しますjava.util.LinkedHashMap。したがって、コードを次のように変更します。

ClassA a1 = (ClassA)objectMapper.readValue(JSON_str, ClassA.class);
java.util.LinkedHashMap b = (java.util.LinkedHashMap)a1.getAttribute1();

または、このフィールドに入力するClassAのコードを確認して、オブジェクトにClassBインスタンスを生成しない理由を理解してください。

于 2012-08-07T12:52:54.610 に答える