java为什么Set<Objects>和Map<Object,Object>
Line 1 : Set<Object> singletons = new HashSet<Object>();
Line 2 : singletons.add(new Integer(2));
Line 3 : Map<String, Object> myMap = new HashMap<String, String>();
为什么编译器会在第3行抱怨,而不会在第2行抱怨
你可以在下面搜索框中键入要查询的问题!
Line 1 : Set<Object> singletons = new HashSet<Object>();
Line 2 : singletons.add(new Integer(2));
Line 3 : Map<String, Object> myMap = new HashMap<String, String>();
为什么编译器会在第3行抱怨,而不会在第2行抱怨
# 1 楼答案
两个都试试
或者
但如果使用java版本,我会使用右边的菱形运算符>;=七,
# 2 楼答案
作为mentioned in the comments,如果您将第一行更改为
你会得到同样的错误。这是因为
HashSet<String>
(甚至Set<String>
)不是Set<Object>
的一个亚型。要了解原因,请考虑一下您将调用该集合的操作。您已经调用了一个Integer
对象这很好,因为您将
singletons
实例化为HashSet<Object>
。如果将其实例化为HashSet<String>
,那么将向String
集合添加Integer
对象,这是不允许的