Tôi đã đoạn mã sau:Không thể làm tài liệu tham khảo tĩnh để lớp con generic (Java)
class SuperClass {
public static String getName() { return "super"; }
}
class SubClass extends SuperClass {
public static String getName() { return "sub"; }
}
public class Dummy<T extends SuperClass> {
public void print() {
System.out.println("SuperClass: " + SuperClass.getName());
System.out.println("SubClass: " + SubClass.getName());
System.out.println("T: " + T.getName());
}
public static void main(String[] args) {
new Dummy<SubClass>().print();
}
}
Mã này kết quả đầu ra như sau:
SuperClass: super
SubClass: sub
T: super
Câu hỏi của tôi là: Tại sao không làm T .getName() trả về giá trị của SubClass.getName()? Sau khi tất cả, tôi xác định rằng T == SubClass. Hoặc là các cuộc gọi hàm tĩnh không hợp lệ đối với các tham chiếu chung?
Cảm ơn rất nhiều trước!
Ok, điều đó rõ ràng cho đến nay. Nhưng làm thế nào tôi có thể sau đó gọi phương thức tĩnh SubClass.getName() từ Dummy sử dụng T? Tôi muốn có nhiều lớp con hơn nữa với Dummy có thể gọi getName() một cách minh bạch. – JeffreyHammansson