次のように定義されたオブジェクトがあります。
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
変数を aにすると、 a を 'Map>` にMap<String, List<LightGeometry>>
代入できないというキャスト エラーが発生します。Map<String,ArrayList<LightPolygon>>