0

Given the following code:

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
     
    }
}

Can someone explain why I cannot add the object of new Bird() and the object of new Sparrow() into the list? I was expecting line 1 and line 2 to compile since the class Sparrow is a subclass of Bird, and Bird is itself.

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
san
  • 263
  • 2
  • 7
  • 14

0 Answers0