2011-09-12 41 views
14

Tôi đang đọc chương về Generics từ Java hiệu quả [Item 27]."Loại đệ quy bị ràng buộc" trong Generics có nghĩa là gì?

Có đoạn này trong cuốn sách:

Đó là chấp nhận được, mặc dù tương đối hiếm, đối với một số loại được giới hạn bởi một số biểu hiện liên quan đến kiểu tham số của chính nó. Đây là thứ được gọi là loại đệ quy bị ràng buộc.

và điều này:

// Using a recursive type bound to express mutual comparability 
public static <T extends Comparable<T>> T max(List<T> list) {...} 

gì được loại đệ quy ràng buộc và làm thế nào để mảnh trên mã giúp đạt được so sánh lẫn nhau?

+2

quote đầu tiên của bạn câu trả lời đầu tiên của hai câu hỏi của bạn, đúng không? – NPE

+0

Có, không:) ... – vinoth

Trả lời

17

gì được loại đệ quy ràng buộc

này: <T extends Comparable<T>>

Lưu ý rằng các loại tham số T cũng là một phần của chữ ký của các siêu giao diện Comparable<T>.

và đoạn mã trên giúp đạt được sự so sánh lẫn nhau như thế nào?

Đảm bảo rằng bạn chỉ có thể so sánh các đối tượng thuộc loại T. Nếu không có loại ràng buộc, Comparable so sánh hai số Object s. Với kiểu bị ràng buộc, trình biên dịch có thể đảm bảo rằng chỉ có hai đối tượng thuộc loại T được so sánh.

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