2

LinkedHashMap を拡張するクラス (EntireFile) があります。私はキャストしようとします:

EntireFile old = (EntireFile) functionReturningLinkedHashMap();

「java.util.LinkedHashMap を com.gmail.maximsmol.YAML.GroupMap にキャストできません」というメッセージで例外がスローされます。

public class EntireFile extends LinkedHashMap<String, GroupMap>

public class GroupMap extends LinkedHashMap<String, CategoryMap>

public class CategoryMap extends LinkedHashMap<String, LinkedHashMap<String, Integer>>

エラーを解決するのを手伝ってください!

4

2 に答える 2

5

問題は、返された参照が単にのインスタンスへの参照ではないEntireFileことです。functionReturningLinkedHashMapを返すだけの場合LinkedHashMap、 にキャストすることはできませんEntireFile。なぜなら、それ1 ではないからです。

(あなたの例外から判断すると、実際にはGroupMapではなくについて話しているのですEntireFileが、同じことが当てはまります。)

ここには特別なことは何もありませんLinkedHashMap- 同じことがJavaでも常に当てはまります。

Object foo = new Object();
String bar = (String) foo; // Bang! Exception
于 2012-09-17T14:45:34.300 に答える
0

キャストする代わりに、必要なタイプのマップにデータをコピーできます。

EntireFile old = new EntireFile(functionReturningLinkedHashMap());

また

EntireFile old = new EntireFile();
old.putAll(functionReturningLinkedHashMap());
于 2012-09-17T14:55:45.280 に答える