Jef*_*son 5 java generics inheritance static extends
我有以下代码:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
此代码输出以下内容:
SuperClass: super
SubClass: sub
T: super
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么T.getName()不返回SubClass.getName()的值?毕竟,我指定了T == SubClass.或者静态函数调用对于泛型引用是否无效?
非常感谢提前!
Sim*_*son 13
这不仅仅是关于泛型的问题.
如果你说:
SuperClass obj = new SubClass();
System.out.println(obj.getName());
Run Code Online (Sandbox Code Playgroud)
你也会得到"超级".没有"多态"静态方法.
在您的情况下,所有编译器都知道T它是否扩展SuperClass,因此它将调用SuperClass.getName().
| 归档时间: |
|
| 查看次数: |
3581 次 |
| 最近记录: |