我有一个对象定义如下:
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
变量 aMap<String, List<LightGeometry>>
那么我得到一个转换错误,说我不能将 a 分配Map<String,ArrayList<LightPolygon>>
给一个 'Map>`