为什么列表<集<? extend =“” integer =“” >>被分配给List <set <? extended =“” number =“” >>?

时间:2018-11-30 02:01:36

标签: java generics covariance type-bounds

试图使某些泛型工作,我得到了以下简化示例:

    Set<? extends Number> setOfNumbers;
    Set<? extends Integer> setOfIntegers = new HashSet<>();
    setOfNumbers = setOfIntegers; // compiles

    List<Set<? extends Number>> listOfSetOfNumbers;
    List<Set<? extends Integer>> listOfSetOfIntegers = new LinkedList<>();
    listOfSetOfNumbers = listOfSetOfIntegers; // does not compile

我理解(显然不完全)并且经常使用类型界限,但是这种情况使我感到困惑。如果有的话,我希望listOfSetOfIntegers = listOfSetOfNumber;不起作用(实际上也不起作用)。

那是为什么?

0 个答案:

没有答案