当前位置:  开发笔记 > 编程语言 > 正文

无法对泛型子类(Java)进行静态引用

如何解决《无法对泛型子类(Java)进行静态引用》经验,为你挑选了1个好方法。

我有以下代码:

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.或者静态函数调用对于泛型引用是否无效?

非常感谢提前!



1> Simon Nicker..:

这不仅仅是关于泛型的问题.

如果你说:

SuperClass obj = new SubClass();
System.out.println(obj.getName());

你也会得到"超级".没有"多态"静态方法.

在您的情况下,所有编译器都知道T它是否扩展SuperClass,因此它将调用SuperClass.getName().

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有