用更窄的paremetrization覆盖泛型方法

VB_*_*VB_ 3 java generics

是)我有的:

我有一个我想覆盖的通用方法:

class A {}
class B extends A {}
class C {
  public <T extends A> void function(T param) { //will be overriden in heirs
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

将会有很少的类扩展C级和窄参数化.例:

class D extends C {
  @Override
  public <T extends B> void function(T param) { //T extends B, not A!! Or even better if it can be only B-class, not heirs
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

题:

我怎么能做到这一点?

编辑:

C类有许多继承人:D,F,G,H ......这些类中的每一个都有单一的方法f(T param).对于每种方法,我需要在每种情况下T都是不同的Z类继承人.

所以我决定我可以在泛型的帮助下在C级中设置通用API.但如果它不可能,也许是其他方式?

sp0*_*00m 6

参数化您的类可能是一个解决方案:

class C<T extends A> {

    public void function(T param) {
        // ...
    }

}

class D<T extends B> extends C<T> {

    @Override
    public void function(T param) {
        // ...
    }

}
Run Code Online (Sandbox Code Playgroud)