class Hammer Implements Part {
public String getName() { return name; }
public int getId() { return id; }
...
}
class Wrench implements Part {
public String getName() { return name; }
public int getId() { return id; }
...
}
interface Part {
String getName();
int getId();
}
我使用Android的SQLite的寫了一個預置的數據庫管理器返回一個基於對象的名單是什麼,我檢索:
dataManager().getWrenchDao().getAll(); // returns List<Wrench>
我無法改變這個功能的運作方式。
現在我得到兩個列表,如:
List<Wrench> wrenches = dataManager().getWrenchDao().getAll();
List<Hammer> hammers = dataManager().getHammerDao().getAll();
不過,我想這個數據來填充紡紗廠(紡紗是在Android的下拉列表)。
loadSpinner(Spinner s, List<Part> data) {
...
data.ElementAt(i).getName();
data.ElementAt(i).getId();
...
}
loadSpinner(wrenchSpinner, wrenches);
但它給了我一個鑄造錯誤,你不能改變扳手部分。爲什麼Java不讓我這樣做?扳手有所有零件都做的方法,爲什麼我不能將它投入到實現和使用它的東西中?
錯誤:
The method loadSpinner(Spinner, List<Part>) in the type NewActivity is not applicable for the arguments (Spinner, List<Wrench>)
我認爲WrenchDao應返回的List <?擴展部分> – user2147970
你能粘貼實際的錯誤嗎?我認爲這是抱怨,你不能'列表'到'列表',不是你不能''扳手'''部分'...? –
如果Part不是界面,而是將其設爲父類,然後讓扳手和錘子擴展Part。你甚至可以讓getName()和getId()抽象,以便扳手和錘子必須實現這些方法。 – RyPope