Java 泛型编程:尝试将值放入枚举映射时出错
我正在使用Java泛型编程创建HashMap:Java 泛型编程:尝试将值放入枚举映射时出错,java,generics,dictionary,collections,Java,Generics,Dictionary,Collections,我正在使用Java泛型编程创建HashMap: Map< String, ? super TreeSet< MyObject>> myMap = new HashMap< String, TreeSet< MyObject>>(); 错误是: put(String, capture< ? super java.util.TreeSet< MyObject>>) in Map cannot be applied to (S
Map< String, ? super TreeSet< MyObject>> myMap = new HashMap< String, TreeSet< MyObject>>();
错误是:
put(String, capture< ? super java.util.TreeSet< MyObject>>) in Map cannot be applied to (String, java.util.Set< MyObject>)
映射中的put(String,capture<?super java.util.TreeSet任何帮助都将不胜感激。
mySet
被声明为Set
类型,而映射只能在值中包含TreeSet
s。编译器无法保证要添加的mySet
不是HashSet
,这可能导致运行时异常。这就是它发出编译错误信号的原因
当将TreeSet
声明为类型参数时,应该对接口编程。换句话说,您应该使用Set
:
Map<String, ? super Set<MyObject>> myMap = new HashMap<String, Set<MyObject>>();
Map<String, ? super Set<MyObject>> myMap = new HashMap<String, Set<MyObject>>();
// or
TreeSet<MyObject> mySet = new TreeSet<MyObject>();