Originariamente inviato da redo86
cosi facendo però come posso modificare matricola visto che è posseduto da studenti e in elem c'è un oggetto Persona?
Per la tua "collezione" dovrebbe essere del tutto ininfluente!!!
Se ha un metodo:
public Persona get(int indice) { ... }
Quando usi la collezione sei tu che devi sapere cosa ci può essere:
Caso 1: Sai a priori che la tua collezione contiene solo oggetti Studente (perché dove hai fatto gli inserimenti hai inserito solo oggetti Studente):
codice:
Studente s = (Studente) tuaCollezione.getPersona(123);
Fai un cast. Lo sai tu che contiene solo Studenti, quindi il cast è valido fintanto che tiene quanto ho appena detto: contiene solo oggetti Studente.
Caso 2: Sai a priori che la tua collezione può contenere oggetti Persona o suoi sottotipi (es. Studente).
In questo caso ... dipende da cosa poi devi farci. Vuoi fare qualcosa di specifico? Devi fare un cast come sopra ma .... non subito!! Devi prima testare il tipo:
codice:
Persona p = tuaCollezione.getPersona(123);
if (p instanceof Studente) { // è davvero un Studente???
Studente s = (Studente) p;
.....
}