我有一個對象定義如下:泛型通配符的正確使用
protected Map<String, ? extends List<? extends LightGeometry>> geoms=new HashMap<String,List<LightGeometry>>();
我嘗試的對象,看起來符合通配符
ArrayList<LightGeometry> points=new ArrayList<LightGeometry>();
points.add((LightGeometry)new LightPoint(pt));
geoms.put("point", points);
編譯器插入拋出一個錯誤,指出:
方法
put(String, capture#18-of ? extends List<? extends LightGeometry>
)類型Map<String,capture#18-of ? extends List<? extends LightGeometry>>
不適用於參數(String, ArrayList<LightGeometry>)
我錯過了什麼?
編輯:爲什麼我使用與泛型類型 它基本上可以歸結爲能夠在列表(我通過服務獲得)分配給該geoms
對象,它是在另一個類的通配符,沒有必須篩選清單才能投射。
public void onSuccess(Map<String, ArrayList<LightPolygon>> result) {
// TODO Auto-generated method stub
GWT.log("" + result.size());
Log.debug("" + result.size());
long startTime = System.currentTimeMillis();
if (overlay != null) {
overlay.setData(result);
overlay.update();
Log.debug("time to add features: "
+ (System.currentTimeMillis() - startTime));
}
}
如果我讓geoms
變量Map<String, List<LightGeometry>>
然後我得到一個錯誤鑄,說,我不能指定一個Map<String,ArrayList<LightPolygon>>
到「地圖>`
我希望能夠在不使用鑄造的情況下插入值 – giscope 2012-04-26 19:32:18