Добавление в список с верхними подстановочными знаками в java

Учитывая следующий код:

public class Test{

    static class Bird{}
    static class Sparrow extends Bird{}
    
    public static void main(String args[]){
    
    List<? extends Bird> list = new ArrayList<Bird>();
   
    list.add(new Bird()); //Does not compile ...line 1
    list.add(new Sparrow());//Does not compile ...line 2
     
    }
}

Может кто-нибудь объяснить, почему я не могу добавить объект new Bird() и объект new Sparrow() в список? Я ожидал, что строки 1 и строки 2 будут скомпилированы, поскольку класс Sparrow является подклассом Bird, а Bird является самим собой.


person san    schedule 03.10.2020    source источник
comment
это отвечает на ваш вопрос?   -  person JustAnotherDeveloper    schedule 03.10.2020