public class Base {
//long list of attributes
// no Constructor using fields
// no init methode
// i cannot change this class
}
ora ho esteso la classe di base come:java, inizializzare SubClass da SuperClass
public class subClass extends Base{
private boolean selected;
...
getter und setter
...
}
divento un elenco di oggetti Base List<Base>
ma ho bisogno la stessa lista ma come List<SubClass>
è c'è un modo per inizializzare la Sottoclasse dalla Base Class?
esempio:
for(Base b: list){
SubClass sub = (SubClass)b; // Thats wrong i know
if(...){
sub.setSelected(true);
}
newList.add(sub);
}
cerco di evitare l'init manuale di ciascun attributo della Base Class
alla sottoclasse
aggiorno mia interrogazione, come richiesto nei commenti: il disegno qui sopra è solo un esempio. il mio QUESTIN ESATTAMENTE È:
perché la conversione di BaseClass in SubClass (sione Subclass extends BaseClass
) non è possibile? perché Java dos non mi permetterà di fare il seguente:
esempio:
Class Base{
private String name;
.....
}
Class SubClass extends Base{
private String title;
}
poi
Base b = DBController.getById(...);
SubClass sub = (SubClass)b;
dopo che l'oggetto sub
dovrebbe avere il nome attributo dall'oggetto b
e la title
L'attributo è nullo
perché non è questo il caso in java?
dispiace per il mio cattivo inglese, grazie
Inizializza sottoclasse dalla superclasse - perché? Questo sembra mal concepito nel migliore dei casi e pericoloso nel peggiore dei casi. –
Dove è definito il campo 'Elenco '? Nella classe 'Base' stessa? Hai il controllo su dove è stato dichiarato e su come è stato inizializzato? –
Perception
Consiglio vivamente di esaminare "preferisci la Composizione sull'ereditarietà" - google it. Troverete alcune discussioni interessanti sull'argomento. Dico solo perché sembra che tu stia tentando disperatamente di abusare del privilegio. –