generic を組み合わせた Java さんの挙動がよく分かりません orz
static public <K, V> Map<K, ? extends List<V> > safePut(Map<K, ? extends List<V> > map, K key, V value) { List<V> list = map.get(key); if(list == null) { list = new ArrayList<V>(); map.put(key, list); // だめ // ↑The method put(K, capture#2-of ? extends List<V>) // in the type Map<K,capture#2-of ? extends List<V>> // is not applicable for the arguments (K, List<V>) } list.add(value); return map; }
"? extends List
"? extends" を取っ払ったら put 出来るようになったものの、ソレだと汎用性がなくなっちゃうしなぁー…