ジェネリック マップを含むジェネリック クラスの clone() メソッドを作成したいのですが、マップのエントリセットの反復処理に行き詰まっています。重要な部分は次のとおりです。
private Map<Object, ObjectWrapper<E>> map = new ConcurrentHashMap<Object, ObjectWrapper<E>>();
for (Map.Entry<Object, ObjectWrapper<E>> entry: map.entrySet()){
....
}
コンパイラ エラーは次のとおりです。
[ERROR] found : java.util.Map.Entry<java.lang.Object,abc.ObjectWrapper<E>>
[ERROR] required: java.util.Map.Entry<java.lang.Object,abc.ObjectWrapper<E>>
私には同じように見えます:)
ループ内でキーを反復処理して値を取得することで処理を実行できますが、Sonar で問題が発生します。map.entrySet() の結果を多くのものにキャストしようとしました(Set<? extends<Map.Entry<Object, ObjectWrapper<E>>>)
同様のトピックで提案されているように、結果はありません:(
編集: 問題は、クラスとメソッドの両方でジェネリックパラメーターを使用していました。今後の参考のために、SSCE を次に示します (動作していません)。
public class Test<E> {
private Map<Object, ObjectWrapper<E>> map = new ConcurrentHashMap<Object, ObjectWrapper<E>>();
public <E> Test<E> test(){
for (Map.Entry<Object, ObjectWrapper<E>> entry: map.entrySet()){
}
return null;
}
private static class ObjectWrapper<T>{
}
}