我可能只是在設計這個錯誤,但說我有4種不同類型的動物。我有一隻鳥,一匹馬,一隻老鼠和一條魚。我試圖把它們全部作爲動物的一個子類,但這是不好的設計或容易出錯,但有一些方法來自動物我希望它們都擁有,我希望它們都可以在幾乎相同的地方使用。是否有可能使ArrayList只接受實現特定接口的對象?
所以我讓動物成爲一個接口,現在我想讓它們有一個數組列表,但ArrayList不起作用,因爲Animal不是一個類。
任何人都可以幫助我,或者有更簡單/更簡單的設計方法嗎?
我animalHouse類
import java.util.ArrayList;
public class AnimalHouse {
private ArrayList<? extends Animal> animals;
public AnimalHouse(Bird a, Bird b)
{
animals = new ArrayList();
animals.add(a);
animals.add(b);
}
}
我的鳥類
public class Bird implements Animal {
@Override
public void run() {
System.out.println("run");
}
@Override
public void sit() {
System.out.println("sit");
}
}
和我的接口
public interface Animal {
public void run();
public void sit();
}
一個接口類型的ArrayList是完全可能的。請顯示你的代碼。 –
您可以創建列表,比如'List',但是在檢索時,您需要將其轉換爲其子類,以便能夠調用子類的功能。 –
您的陳述「ArrayList不起作用,因爲Animal不是類」是錯誤的。正如其他人所問,請發佈您的代碼並特別告訴我們問題是什麼(編譯器錯誤,異常等)以及它發生的位置(您發佈的代碼中的哪一行)。 –