如果我有類驅動程序和類管理器。父母和孩子的ArrayList。不抽象
經理從驅動
public class Driver { ...
繼承。
public class Manager extends Driver { ...
我想寫一個簡單的登錄,所以經理有一個不同的菜單來執行更多的操作。但我無法弄清楚如何將這兩種類型存儲在我的Depot類的ArrayList中。
public class Depot {
public ArrayList<Driver> arrayDrivers = new ArrayList<Driver>();
因爲顯然現在添加到此數組的任何東西現在都是驅動程序,而不是適用的管理程序。
,當我嘗試:
public ArrayList<? extends Driver> arrayDrivers = new ArrayList<Driver>();
我得到的錯誤:即使我改變
public Depot(ArrayList<Driver> tempDriver) {
arrayDrivers.addAll(tempDriver);
}
ArrayList<? extends Driver> tempDriver
誰能幫我出我不能想出解決辦法。
我知道最好是創建一個抽象類的用戶例如然後驅動程序和管理器,但它是課程作業,我必須按照圖和說明。
編輯:
我讀的地方,情況並非如此,我必須在被誤導。
因此,即使當我獲得像這樣的指針,它仍然應該作爲經理?
public boolean authenticateDriver(String username, String password, Driver driver) {
Driver userDriver = GetDriver(username); //Not a manager anymore?
if(userDriver != null) {
driver = userDriver;
return userDriver.checkPassword(password);
}
else {
return false;
}
}
。
public Driver GetDriver(String driver) {
for (Driver currentDriver : arrayDrivers) {
if (currentDriver.userName.equals(driver)) {
return currentDriver;
}
}
return null;
}
你提到的第一個選項到底是什麼問題('ArrayList arrayDrivers')? –
此信息可能對您有所幫助http://stackoverflow.com/questions/4343202/difference-between-super-t-and-extends-t-in-java – user2793390