使用泛型参数覆盖方法

时间:2013-01-07 12:57:46

标签: java generics override

我们在类中有一个采用泛型参数

的方法
public class XYZ {
     public <T extends Animal> someMethod(T animal){}
}

我想在具有特定类型的子类中覆盖此方法,但不知道如何。如何解决这个问题?

public class ABC extends XYZ{
  @Override
  public Cat someMethod(Cat animal){}  // error
}

1 个答案:

答案 0 :(得分:5)

一种可能的解决方案是让您的XYZ类通用:

public class XYZ<T extends Animal> {

    public void someMethod(T animal) {
    }
}

并宣布你的ABC课程专门针对猫:

public class ABC extends XYZ<Cat> {
}

现在你可以写:

ABC cats = new ABC();
cats.someMethod(new Cat()); //ok
cats.someMethod(new Dog()); //does not compile