![](/img/trans.png)
[英]A Java method that can only be called by its own class or by other subclasses
[英]How to define an interface method to accept a class or any of its subclasses in Java?
假设我有一个名为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的实现?
您需要输入AnimalTrainer
public interface AnimalTrainer<T extends Animal>
{
public void trainAnimal(T animal);
}
public class LionTrainer implements AnimalTrainer<Lion>
{
public void trainAnimal(Lion lion);
}
使用泛型:
public interface AnimalTrainer<T extends Animal> {
void trainAnimal(T animal);
}
class LionTrainer implements AnimalTrainer<Lion> {
public void trainAnimal(Lion lion) {...}
}
您应该使用通用类型...
public interface AnimalTrainer<T extends Animal>
{
public void trainAnimal(T animal);
}
然后LionTrainer implements AnimalTrainer<Lion>
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.