การเพิ่มลงในรายการด้วยไวด์การ์ดขอบเขตบนใน 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
comment
ซ้ำกันทุกประการ: ไวด์การ์ดขอบเขตบนทำให้เกิดข้อผิดพลาดในการคอมไพล์ใน Java   -  person Alex Shesterov    schedule 03.10.2020