2010-03-24 34 views

Trả lời

19

Hãy thử setSuperClassList(List<? extends Superclass>).

Đồng thời kiểm tra PECS để xem thời điểm bạn nên sử dụng ? extends hoặc ? super.

+1

+1 đề cập đến Pecs. :-) –

+0

đã đồng ý - cảm ơn vì liên kết –

1

Nó sẽ không biên dịch vì java.util.List không phải là covariant.

Hãy thử setSuperClassList(List<? extends Superclass>) để thay thế.

5

Bạn chỉ đang làm các generics một chút sai. Thêm các bit ? extends và điều đó sẽ cho phép danh sách được chuyển vào danh sách chứa SuperClass hoặc bất kỳ lớp con nào của nó.

setSuperClassList(List<? extends Superclass>) 

Điều này được gọi là đặt giới hạn trên trên các ống kính.

Tuyên bố List<Superclass> cho biết Danh sách chỉ có thể chứa SuperClass. Điều này loại trừ bất kỳ lớp con nào.

0

Do:

setSuperClassList(List<? extends Superclass> list) 

này sẽ cho phép một danh sách của bất kỳ lớp con của lớp cha.

Các vấn đề liên quan