2012-05-14 28 views
0

假設我有一個名爲Animal的類和一個名爲AnimalTrainer的接口。如何定義接口方法來接受Java中的類或其任何子類?

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

(我必須指出'Anim alTrainer'應該是一個角色。一個'AnimalTrainer' instnace應該能夠做'LionTraining'和'AntTraining'。) –

+0

@ TomHawtin-tackline好的。上面的例子只是爲了說明。 – CodeBlue

回答

4

您需要輸入AnimalTrainer

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

public class LionTrainer implements AnimalTrainer<Lion> 
{ 
    public void trainAnimal(Lion lion); 
} 
+0

感謝您的回答。 – CodeBlue

2

使用泛型:

public interface AnimalTrainer<T extends Animal> { 
    void trainAnimal(T animal); 
} 
class LionTrainer implements AnimalTrainer<Lion> { 
    public void trainAnimal(Lion lion) {...} 
} 
1

,您應該使用泛型類型...

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

然後LionTrainer implements AnimalTrainer<Lion> ...

+0

或我在輸入時發佈的其他兩個答案中的任何一個:D – Vinze

+0

他們很快,不是嗎?! – assylias

相關問題