2012-12-09 20 views
9

Tôi hiểu trongSử dụng siêu trong Comparator trong java

Comparator < ? super T> comp 

Nó trả về phần tử tối đa của bộ sưu tập được đưa ra, theo trình tự gây ra bởi các so sánh cụ thể. Nhưng tôi không hiểu được mục đích của

super T

bất cứ ai có thể có thể giải thích?

Trả lời

3

Tại đây < ? super T> có nghĩa là generics - KHÔNG so sánh.

Nó có nghĩa là bạn có một Comparator với một kiểu generic của ? super T (cái gì mà kéo dài siêu gõ bằng T), như được giải thích trong this thread

comp là tên biến (ràng buộc).

Vì vậy, về cơ bản ở đây Comparator < ? super T> là một loại comp là một định danh (variable name), đó là loại Comparator <? super T>


Để biết thêm thông: Java Generics

+0

Cảm ơn bạn đã khai thác +1 – Marcello

9

Thuật ngữ ? super T có nghĩa là "loại không xác định, hoặc là một lớp siêu, T", trong ngữ cảnh tổng quát có nghĩa là giới hạn dưới của nó là T.

Chữ ký này được sử dụng vì T có thể được chỉ định và so sánh với bất kỳ biến nào có loại hoặc là một lớp siêu, T. Tức là nếu một Trình so sánh có thể chấp nhận một lớp siêu T trong phương thức compare() của nó , bạn có thể vượt qua một T.

Điều này tuân theo lời nhắc nhở của PECS: "Nhà sản xuất mở rộng, Siêu người tiêu dùng", điều đó có nghĩa là nhà sản xuất đồ vật phải làm việc với những thứ có giới hạn trên bị ràng buộc (? mở rộng T) và người tiêu dùng (như triển khai so sánh rằng sử dụng điều) sẽ hoạt động với thấp hơn giới hạn (? siêu T).

+0

Cảm ơn bạn đã khai thác +1 – Marcello