我有一个对象定义如下:泛型通配符的正确使用
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