gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:37 26 4
gpt4 key购买 nike

我有以下代码:

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();
}
}

此代码输出以下内容:

SuperClass: super
SubClass: sub
T: super

我的问题是:为什么 T.getName() 不返回 SubClass.getName() 的值?毕竟,我指定了 T == SubClass。还是静态函数调用对泛型引用无效?

提前致谢!

最佳答案

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

如果你说:

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

你也会得到“ super ”。没有“多态”静态方法。

在您的情况下,编译器对 T 的全部了解是它扩展了 SuperClass,因此它将调用 SuperClass.getName()

关于java - 无法对泛型子类进行静态引用 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/677226/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com