调用类型变量的基静态方法和派生静态方法
我有以下示例:
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
A<ConcreteErrorHandler> a = new A<ConcreteErrorHandler>();
a.m(); //Exception here!
}
public static class AbstractErrorHandler {
public static void handle(){
throw new UnsupportedOperationException("Not implemented");
}
}
public static class ConcreteErrorHandler extends AbstractErrorHandler{
public static void handle(){
System.out.println("Concrete handler");
}
}
public static class A<T extends AbstractErrorHandler>{
public void m(){
T.handle();
}
}
}
为什么调用基类的方法,而不是派生的方法?这些方法的签名是完全相同的。我知道静态方法不会继承,但是在我的情况下不应该抛出编译时错误吗?handle()
有人能解释这种行为吗?