Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [JAVA] Trasformare un oggetto in una sua sottoclasse

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Trasformare un oggetto in una sua sottoclasse

    Originariamente inviato da doraemon83
    dopo aver controllato che il tipo è effettivamente quello
    Guarda che il modo più semplice per farlo è: if (x instanceof Manager)

    Originariamente inviato da doraemon83
    ma vorrei sapere se esiste una soluzione che mi permetta di passare da una superclasse a una sottoclasse senza utilizzare un cast.
    No.
    Ma poi perché non vuoi usare un cast??? Non ti piace? Deturpa il tuo codice???
    Guarda che un down-cast non è mai implicito ed è il programmatore che deve sempre assicurarsi che il cast sia corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Nono assolutamente non ho nulla contro i cast
    Era solamente per sapere... perché il prof dice sempre che, se è possibile, è meglio utilizzare una soluzione che non li utilizzi, quindi visto che lui preferisce cosi io cerco di adeguarmi a lui...
    Magari trovo una soluzione che a lui piace di più, il che equivale a un voto più alto

    Ma visto che non esiste una soluzione a questo problema che non utilizzi un cast, allora va benissimo cosi...

    Grazie mille... ciao ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.