Collection<? super String>
, truy cập trực giác của bạn, không có nghĩa là "bộ sưu tập chứa đối tượng thuộc loại String
hoặc siêu kiểu của nó". Nó có nghĩa là "col
sẽ là một bộ sưu tập chứa một số loại nhất định, mà chính nó là String
hoặc siêu kiểu của nó" (chẳng hạn như Object
, Serializable
hoặc CharSequence
).
Cách tốt nhất để suy nghĩ về Collection<? super String>
là nó không phải là một loại, như bạn đã quen với Java, nhưng là một mẫu đối với loại kết hợp cụ thể nào.
Bây giờ, điều duy nhất bạn có thể thêm vào bộ sưu tập phù hợp với mẫu trên là String
hoặc lớp con của nó (nếu có). Hoàn toàn trái ngược với những gì bạn mong đợi, phải không? Đó là Generics cho bạn.
Nguồn
2013-07-02 08:02:21
' super String> 'chỉ có thể thêm Chuỗi. 'Object' có thể không phải là String .. Cố gắng làm:' Object myObj = new String(); 'và nó sẽ hoạt động. – Maroun
Không, mọi thứ ** mở rộng ** Chuỗi. Nó có nghĩa là *? mà siêu là String *. – m0skit0
@ m0skit0 đó là nơi tôi đã bối rối. Cảm ơn. – Rollerball