sid*_*ate 0 java generics overriding
我们在类中有一个带泛型参数的方法
public class XYZ {
public <T extends Animal> someMethod(T animal){}
}
Run Code Online (Sandbox Code Playgroud)
我想在具有特定类型的子类中覆盖此方法,但不知道如何.如何解决这个问题?
public class ABC extends XYZ{
@Override
public Cat someMethod(Cat animal){} // error
}
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案是使您的XYZ类具有通用性:
public class XYZ<T extends Animal> {
public void someMethod(T animal) {
}
}
Run Code Online (Sandbox Code Playgroud)
并声明你的ABC课程特定于猫:
public class ABC extends XYZ<Cat> {
}
Run Code Online (Sandbox Code Playgroud)
现在你可以写:
ABC cats = new ABC();
cats.someMethod(new Cat()); //ok
cats.someMethod(new Dog()); //does not compile
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |