Tôi đã đọc cuốn sách của O'Reilly, nhờ đó tôi biết được nguyên tắc nhận đặt này .
- Sử dụng
extends
ký tự đại diện khi bạn chỉ nhận được các giá trị từ một cấu trúc.- Sử dụng
super
ký tự đại diện khi bạn chỉ đặt các giá trị vào một cấu trúc.- Và đừng sử dụng ký tự đại diện khi cả hai bạn muốn lấy và đặt từ / đến một cấu trúc.
Các trường hợp ngoại lệ là:
Bạn không thể đặt bất kỳ thứ gì vào kiểu được khai báo bằng
extends
ký tự đại diện ngoại trừ giá trịnull
, thuộc về mọi kiểu tham chiếu.Bạn không thể lấy bất cứ thứ gì từ một kiểu được khai báo bằng
super
ký tự đại diện ngoại trừ một giá trị của kiểuObject
, đây là kiểu siêu của mọi kiểu tham chiếu.
Bất cứ ai có thể giúp tôi khám phá quy tắc này sâu hơn? Nếu có thể, hãy đặt chúng theo cách phân cấp.