Salve a tutti.
Sto svolgendo un esercizio per l'università e mi sono imbattuto in questo problema.
Ho una classe Employee che rappresenta un lavoratore di un'azienda. Poi ho la classe Manager che estende Employee.
Devo creare una classe Department che abbia una collezione di Employee (che implemento come un TreeSet). Questa classe deve avere un metodo getManagers che sia utilizzabile nel seguente modo :
codice:
Collection <Manager> x=department.getManagers();
In questo metodo quindi devo cercare all'interno del mio TreeSet tutti i Manager e inserirli in una collezione da restituire. Il problema è che la collezione ha come tipo i Manager, mentre io ho soltanto elementi del tipo della superclasse.
Ho risolto il problema con getClass e un cast, nel seguente modo :
(employees è il mio TreeSet)
codice:
public Collection <Manager> getManagers() {
List <Manager> managers=new LinkedList<Manager>();
for (Employee x : employees) {
if (x.getClass()==Manager.class) {
managers.add((Manager)x); //Qui c'è il cast per trasformare in manager
}
}
return managers;
}
Questa soluzione utilizza un cast da Employee a Manager, dopo aver controllato che il tipo è effettivamente quello, ma vorrei sapere se esiste una soluzione che mi permetta di passare da una superclasse a una sottoclasse senza utilizzare un cast.
grazie mille... ciao ciao