次の実装をタイプセーフな方法で作成する方法はありますか?
public void myMethod( Map<String, ? extends List<String>> map )
{
map.put("foo", Collections.singletonList("bar");
}
上記の実装は機能しません。メソッドを正しくMap<String, ? super List<String>>
コンパイルするには、が必要です。map.put()
ただし、myMethodは、この方法でListのサブタイプを受け入れません。だから、Map<String, ? extends List<String>>
代わりに使用する必要があります。どうすればこの問題をタイプセーフな方法で解決できますか?