假设我有一个名为Animal的类和一个名为AnimalTrainer的接口。
public interface AnimalTrainer
{
void trainAnimal(Animal animal);
}
现在,当我想编写一个只训练Lion的实现时,问题出现了,例如,Lion扩展了Animal。
public class LionTrainer implements AnimalTrainer
{
public void trainAnimal(Lion lion)
{
// code
}
}
但这不起作用。如何在AnimalTrainer中定义trainAnimal方法,以便上面的LionTrainer实现可行?或者我是否必须更改LionTrainer实施?
答案 0 :(得分:4)
您需要输入AnimalTrainer
public interface AnimalTrainer<T extends Animal>
{
public void trainAnimal(T animal);
}
public class LionTrainer implements AnimalTrainer<Lion>
{
public void trainAnimal(Lion lion);
}
答案 1 :(得分:2)
使用泛型:
public interface AnimalTrainer<T extends Animal> {
void trainAnimal(T animal);
}
class LionTrainer implements AnimalTrainer<Lion> {
public void trainAnimal(Lion lion) {...}
}
答案 2 :(得分:1)
你应该使用泛型类型......
public interface AnimalTrainer<T extends Animal>
{
public void trainAnimal(T animal);
}
然后LionTrainer implements AnimalTrainer<Lion>
...