我有這樣的以下接口:使用類型轉換和泛型在Java
public interface FruitDetails {
public String getFruitName();
}
和少量的類實現上述接口:
public class Banana implements FruitDetails{
private int index;
public Banana(int i) {
index = i;
}
@Override
public String getFruitName() {
return "Banana Fruit " + index;
}
}
和
public class Apple implements FruitDetails{
private int index;
public Apple(int i) {
index = i;
}
@Override
public String getFruitName() {
return "AppleFruit " + index;
}
}
我有一個功能打印水果的細節:
現在static void getFruitDetails(List<FruitDetails> fruits) {
for (FruitDetails fruitDetails : fruits) {
System.out.println(fruitDetails.getFruitName());
}
}
我將創建香蕉的列表:
List<Banana> bananaList = new ArrayList<Banana>();
bananaList.add(new Banana(0));
bananaList.add(new Banana(1));
現在我想打印香蕉細節在使用getFruitDetails上面的列表中。
問題是,如果試圖調用
getFruitDetails(bananaList);
我收到編譯時錯誤:
The method getFruitDetails(List<FruitDetails>) in the type MainClass is not applicable for the arguments (List<Banana>)
我怎麼能解決這個問題。
而且還需要定義getFruitDetails這樣,我應該能夠打印香蕉列表或蘋果列表
也許這是我的強迫症,但它會很好,如果界面被稱爲水果,而不是FruitDetails :-) – Rahul