0
私はkey-List<value>
をRAMに保存するための構造が必要なJava EEプロジェクトに取り組んでいます。私はこのようにそれをやってみましたJava 8:マップ<K, V>とリスト<K, V>のサブタイプをパラメータとして渡す方法
public class ListMap<K, V> {
private Map<K, List<V>> map;
private Class<? extends List<V>> listClass;
public ListMap(Class<? extends Map<K, List<V>>> mapClass, Class<? extends List<V>> listClass) throws InstantiationException, IllegalAccessException {
this.map = mapClass.newInstance();
this.listClass = listClass;
}
public void add(K key, V val) throws InstantiationException, IllegalAccessException {
if (map.containsKey(key))
map.get(key).add(val);
else {
List<V> valList = listClass.newInstance();
valList.add(val);
map.put(key, valList);
}
}
public Map<K, List<V>> getMap() {
return map;
}
public <T extends Map<K, List<V>>> T getMap(Class<T> cls) {
return cls.cast(map);
}
public void setMap(Map<K, List<V>> map) {
this.map = map;
}
}
:
ListMap<String, String> msgs = new ListMap<>(HashMap.class, ArrayList.class);
しかし、その動作していない私は、次のようになりますクラスを作成しました。誰でもこのクラスをどのようにインスタンス化できますか教えてください。
Java 8を使用していますか?また、 "_not working_"を定義する - 完全なコンパイルエラーまたはスタックトレースをポストする。 –
'mapClass'を渡す必要はありません。既にビルドされた' Map'を渡すだけです。 –
@BoristheSpider、yup –