0

假设我有一个名为 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 的实施?

4

3 回答 3

4

你需要输入 AnimalTrainer

public interface AnimalTrainer<T extends Animal>
 {
    public void trainAnimal(T animal);
 }

public class LionTrainer implements AnimalTrainer<Lion>
 {
    public void trainAnimal(Lion lion);
 }
于 2012-05-14T15:39:27.527 回答
2

使用泛型:

public interface AnimalTrainer<T extends Animal> {
   void trainAnimal(T animal);
}
class LionTrainer implements AnimalTrainer<Lion> {
   public void trainAnimal(Lion lion) {...}
}
于 2012-05-14T15:39:29.600 回答
1

您应该使用泛型类型...

public interface AnimalTrainer<T extends Animal>
 {
    public void trainAnimal(T animal);
 }

然后LionTrainer implements AnimalTrainer<Lion>...

于 2012-05-14T15:40:24.970 回答