Mam następujący kod:Nie można uczynić statycznych odniesienie do ogólnych podklasy (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();
}
}
Ten kod generuje następujące:
SuperClass: super
SubClass: sub
T: super
Moje pytanie brzmi: Dlaczego nie T .getName() zwraca wartość SubClass.getName()? W końcu określiłem, że T == SubClass. Czy też statyczne wywołania funkcji są nieważne dla ogólnych odniesień?
Bardzo dziękuję z góry!
OK, to jasne do tej pory. Ale jak mogę wywołać statyczną metodę SubClass.getName() z Dummy używając T? Chciałbym mieć wiele dalszych podklas, a manekin może wywoływać funkcję getName() w sposób przejrzysty. – JeffreyHammansson