Mengapa saya mendapatkan kesalahan kompiler dengan kode Java ini?
1 public List<? extends Foo> getFoos()
2 {
3 List<? extends Foo> foos = new ArrayList<? extends Foo>();
4 foos.add(new SubFoo());
5 return foos;
6 }
Dimana 'SubFoo' adalah kelas konkret yang mengimplementasikan Foo, dan Foo adalah sebuah antarmuka.
Kesalahan yang saya dapatkan dengan kode ini:
- Di Baris 3: "Tidak dapat membuat instance ArrayList‹? extends Foo›"
- Pada Baris 4: "Metode add(capture#1-of ? extends Foo) dalam tipe List‹capture#1-of ? extends Foo› tidak berlaku untuk argumen (SubFoo)"
Pembaruan: Terima kasih kepada Jeff C, saya dapat mengubah Baris 3 menjadi "new ArrayList‹Foo›();". Tapi saya masih mengalami masalah dengan Jalur 4.