0

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

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

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

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

1 回答 1

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
于 2013-01-07T13:02:26.220 回答