Java Generics - Ký tự đại diện được giới hạn trên
Dấu chấm hỏi (?), Đại diện cho ký tự đại diện, là viết tắt của loại không xác định trong generic. Có thể có những lúc bạn muốn hạn chế các loại kiểu được phép chuyển cho 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ó.
Để khai báo tham số Ký tự đại diện giới hạn trên, hãy liệt kê dấ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 extension để chỉ định ký tự đại diện giới hạn trên.
package com.tutorialspoint;
import java.util.Arrays;
import java.util.List;
public class GenericsTester {
public static double sum(List<? extends Number> numberlist) {
double sum = 0.0;
for (Number n : numberlist) sum += n.doubleValue();
return sum;
}
public static void main(String args[]) {
List<Integer> integerList = Arrays.asList(1, 2, 3);
System.out.println("sum = " + sum(integerList));
List<Double> doubleList = Arrays.asList(1.2, 2.3, 3.5);
System.out.println("sum = " + sum(doubleList));
}
}
Điều này sẽ tạo ra kết quả sau:
Đầu ra
sum = 6.0
sum = 7.0