用更窄的paremetrization覆盖泛型方法

时间:2013-11-18 12:43:10

标签: java generics

我拥有的内容:

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

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

我想要的是什么:

很少有类可以扩展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
    //...
  }
}

问题:

我怎样才能实现?

修改

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

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

1 个答案:

答案 0 :(得分: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) {
        // ...
    }

}