gpt4 book ai didi

java - 通用编程 : error when trying to put values in an EnumMap

转载 作者:行者123 更新时间:2023-11-29 04:52:01 25 4
gpt4 key购买 nike

我正在使用 Java 泛型编程来创建 HashMap:

 Map< String, ? super TreeSet< MyObject>> myMap = new HashMap< String, TreeSet< MyObject>>();

但是,当我尝试在 myMap 中添加内容时,出现错误。

Set< MyObject> mySet = new TreeSet< MyObject>();
myMap.put("toto", mySet);

错误是:

put(String, capture< ? super java.util.TreeSet< MyObject>>) in Map cannot be applied to (String, java.util.Set< MyObject>)

如有任何帮助,我们将不胜感激。

最佳答案

mySet 声明为 Set 类型,而 map 的值中只能包含 TreeSet。编译器无法保证要添加的 mySet 不是 HashSet,这会导致运行时异常。这就是它发出编译错误信号的原因。

当将 TreeSet 声明为类型参数时,您应该针对接口(interface)进行编程。换句话说,您应该改用 Set:

Map<String, ? super Set<MyObject>> myMap = new HashMap<String, Set<MyObject>>();

除非您确定始终只使用 TreeSet,在这种情况下您可以将 mySet 的类型更改为 TreeSet:

// or
TreeSet<MyObject> mySet = new TreeSet<MyObject>();

关于java - 通用编程 : error when trying to put values in an EnumMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com