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

考えられる解決策の1つは、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 に答える