我想爲包含泛型地圖的泛型類創建一個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>{
}
}
你可以創建一個[SSCCE(http://sscce.org/),所以我們可以看到錯誤的自己呢? – Jeffrey
你還沒有宣佈過'E'或者有過什麼嗎? (注意迭代併發集合可能不會完全符合你的想法。) –
在你的類和方法聲明中,你可能有'',後者隱藏了前者。 –
assylias