Java Generics - Tham số kiểu giới hạn
Có thể đôi khi bạn muốn hạn chế các loại kiểu được phép chuyển cho một tham số kiểu. Ví dụ, một phương thức hoạt động trên các số có thể chỉ muốn chấp nhận các thể hiện của Số hoặc các lớp con của nó. Đây là những gì các tham số kiểu giới hạn dành cho.
Để khai báo một tham số kiểu có giới hạn, hãy liệt kê tên của tham số kiểu, theo sau là từ khóa expand, tiếp theo là giới hạn trên của nó.
Thí dụ
Ví dụ sau minh họa cách dùng để mở rộng theo nghĩa chung có nghĩa là "mở rộng" (như trong các lớp) hoặc "thực hiện" (như trong giao diện). Ví dụ này là phương thức Chung để trả về giá trị lớn nhất trong ba đối tượng có thể so sánh được -
public class MaximumTest {
// determines the largest of three Comparable objects
public static <T extends Comparable<T>> T maximum(T x, T y, T z) {
T max = x; // assume x is initially the largest
if(y.compareTo(max) > 0) {
max = y; // y is the largest so far
}
if(z.compareTo(max) > 0) {
max = z; // z is the largest now
}
return max; // returns the largest object
}
public static void main(String args[]) {
System.out.printf("Max of %d, %d and %d is %d\n\n",
3, 4, 5, maximum( 3, 4, 5 ));
System.out.printf("Max of %.1f,%.1f and %.1f is %.1f\n\n",
6.6, 8.8, 7.7, maximum( 6.6, 8.8, 7.7 ));
System.out.printf("Max of %s, %s and %s is %s\n","pear",
"apple", "orange", maximum("pear", "apple", "orange"));
}
}
Điều này sẽ tạo ra kết quả sau:
Đầu ra
Max of 3, 4 and 5 is 5
Max of 6.6,8.8 and 7.7 is 8.8
Max of pear, apple and orange is pear