有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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行抱怨


共 (2) 个答案

  1. # 1 楼答案

    两个都试试

     Map<String, String> myMap = new HashMap<String, String>();
    

    或者

     Map<String, Object> myMap = new HashMap<String, Object>();
    

    但如果使用java版本,我会使用右边的菱形运算符>;=七,

     Map<String, String> myMap = new HashMap<>();
    
  2. # 2 楼答案

    作为mentioned in the comments,如果您将第一行更改为

    Set<Object> singletons = new HashSet<String>();
    

    你会得到同样的错误。这是因为HashSet<String>(甚至Set<String>)不是Set<Object>的一个亚型。要了解原因,请考虑一下您将调用该集合的操作。您已经调用了一个Integer对象

    singletons.add(new Integer(2));
    

    这很好,因为您将singletons实例化为HashSet<Object>。如果将其实例化为HashSet<String>,那么将向String集合添加Integer对象,这是不允许的