Tôi đang cố gắng hiểu cách sử dụng các ký tự đại diện bị ràng buộc thấp hơn ở một số độ sâu. Tôi đang cố gắng viết một phương pháp chung là copy
sao chép nội dung của một số List
sang một phương thức khác. Tôi đã đưa ra chữ ký phương thức này:Trên Generics Java sử dụng thấp hơn ràng buộc:? super T
<T> void copy(List<T> dest, List<? extends T> src)
Tôi nghĩ chữ ký này là toàn diện để giải quyết tất cả các tình huống. Tuy nhiên, tôi thấy rằng trong các lớp Java Collections chữ ký phương pháp là như thế này:
<T> void copy(List<? super T> dest, List<? extends T> src)
Tôi không hiểu tại sao họ sử dụng List<? super T> dest
thay vì chỉ List<T> dest
. Có thêm sự linh hoạt nào với chữ ký của họ không?
Bạn có thể bao quanh mã nội tuyến bằng dấu gạch chéo ngược để tránh HTML ăn uống thuốc generic của bạn. –