我有一些课。
class A{
static void v(){
System.out.println("A");
}
}
class A1 extends A{
static void v(){
System.out.println("A1");
}
}
class B <T extends A>{
void v(){
T.v();
}
}
为什么下面的代码输出“A”?
B b = new B<A1>();
b.v();
我认为代码应该输出“A1”,因为 B<A1>()
.
最佳答案
您的 T.v()
是一个static
方法调用并编译为 A.v()
因为 T
删除为A
根据其类型上限。
关于Java静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687963/