Tôi có các lớp học lập trình nâng cao tại trường đại học của mình và tôi gặp một chút rắc rối khi hiểu mã này hoạt động như thế nào.Tính đa hình nâng cao trong Java
public final class GenericClass<T> {
private void overloadedMethod(Collection<?> o) {
System.out.println("Collection<?>");
}
private void overloadedMethod(List<Number> o) {
System.out.println("List<Number>");
}
private void overloadedMethod(ArrayList<Integer> o) {
System.out.println("ArrayList<Integer>");
}
public void method(List<T> l) {
overloadedMethod(l);
}
public static void main(String[] args) {
GenericClass<Integer> test = new GenericClass<Integer>();
test.method(new ArrayList<Integer>());
}
}
Tại sao mã này in "Bộ sưu tập <? >"?
cảm ơn, câu trả lời của bạn giải thích thậm chí tại sao sau khi thay đổi 'overloadedMethod (Danh sách o) 'với' overloadedMethod (Danh sách > o) 'chương trình in ra' Danh sách 'thay vì' Collection >' –
sự điều quan trọng nhất là câu cuối cùng của bạn. Điều đó giải thích mọi thứ! –
Câu trả lời khá hay, nhưng -1 để thu hút sự chú ý của bạn vào thực tế là khai báo 'GenericClass' thay cho kết quả trong cùng một lời gọi tới 'overloadedMethod (Collection >)'. Vì vậy, có cái gì khác đang xảy ra ở đây. –