ハッシュマップをキャストしたい:
私のコード:
public class Example {
private HashMap<MyItem, Integer> items =new HashMap<MyItem, Integer>();
@Override
public Map<Item, Integer> gItems() {
return this.items;
}
}
MyItemは、Itemクラスから継承するクラスです。
このコードはコンパイルエラーを引き起こします。
管理上の理由から、このソリューションを使用してreturnメソッドのタイプを変更することはできません。
では、どうすれば自分の TOをキャストできますかHashMap<MyItem, Integer>
Map<Item, Integer>
私が得ているエラーは次のとおりです:タイプの不一致:からHashMap<MyItem, Integer>
に変換できませんMap<Item, Integer>
そして、コンパイル者は私にreturnメソッドのタイプを変更するように頼みます。
ありがとうございました。
Map<MyItem, Integer>
はのサブタイプではないため、キャストできませんMap<Item, Integer>
。これについては、ジェネリックチュートリアルで詳しく説明されています(ジェネリックとサブタイピングのセクションを参照)。
この場合にできることは、関数に Map<? extends Item, Integer>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加