如果我有类驱动程序和类管理器。父母和孩子的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