M
Marc Twain
Could someone please look at the code below and explain me why it's
possible to Cast an ArrayList Object into an Employee then still be
able to call instanceof over the casted object and check if its
original class was Manager?
Shouldn't instanceof retreive 'Employee' for all object cast as
Employee?
TIA!!:
ArrayList employeeArrayList = new ArrayList(10);
employeeArrayList.add(new Employee("Bob Dole", 24000.0, 01, 03,
2003));
employeeArrayList.add(new Manager("G W Bush", 16000.0, 13, 9, 2003,
2000));
employeeArrayList.add(new Employee("Bill Clinto", 21000, 10, 07,
2002));
for (int i = 0; i < employeeArrayList.size(); i++) {
Employee e = (Employee)employeeArrayList.get(i);
if (e instanceof Manager) { // how could this work??
Manager tempManager = (Manager)e;
tempManager.setAnnualBonus(10000.0);
}
e.raiseSalary(10);
System.out.println(e);
}
possible to Cast an ArrayList Object into an Employee then still be
able to call instanceof over the casted object and check if its
original class was Manager?
Shouldn't instanceof retreive 'Employee' for all object cast as
Employee?
TIA!!:
ArrayList employeeArrayList = new ArrayList(10);
employeeArrayList.add(new Employee("Bob Dole", 24000.0, 01, 03,
2003));
employeeArrayList.add(new Manager("G W Bush", 16000.0, 13, 9, 2003,
2000));
employeeArrayList.add(new Employee("Bill Clinto", 21000, 10, 07,
2002));
for (int i = 0; i < employeeArrayList.size(); i++) {
Employee e = (Employee)employeeArrayList.get(i);
if (e instanceof Manager) { // how could this work??
Manager tempManager = (Manager)e;
tempManager.setAnnualBonus(10000.0);
}
e.raiseSalary(10);
System.out.println(e);
}