我有以下代码:
class SuperClass { public static String getName() { return "super"; } } class SubClass extends SuperClass { public static String getName() { return "sub"; } } public class Dummy{ 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 ().print(); } }
此代码输出以下内容:
SuperClass: super SubClass: sub T: super
我的问题是:为什么T.getName()不返回SubClass.getName()的值?毕竟,我指定了T == SubClass.或者静态函数调用对于泛型引用是否无效?
非常感谢提前!
这不仅仅是关于泛型的问题.
如果你说:
SuperClass obj = new SubClass(); System.out.println(obj.getName());
你也会得到"超级".没有"多态"静态方法.
在您的情况下,所有编译器都知道T
它是否扩展SuperClass
,因此它将调用SuperClass.getName()
.