broke31 ha scritto:
In pratica ho una super classe A e 4 sotto classi B C D E , B e C hanno una data all'interno le altre due no il problema sorge che devo scrivere un algoritmo per ordinare l'arraylist in base alla data considerando che le classi D e E non hanno
data di scadenza quindi metterle alla fine del arraylist
Non so ovviamente cosa siano di preciso A, B, .... E ma visto che parli di "data di scadenza" mi viene da pensare che siano dei "prodotti", dove appunto alcuni devono avere una data di scadenza e altri ... ovviamente non ce l'hanno.
Una prima soluzione è quella di sfruttare il polimorfismo con una interfaccia. Definisci una interfaccia es. Deperibile che dichiara il metodo che fornisce la data di scadenza. Alcune classi la implementano, altre no.
Nella logica di comparazione (es. in un Comparator) ti basta verificare se l'oggetto
è-un Deperibile con instanceof.
Le interfacce servono appunto a fornire una "astrazione" e in questo modo la tua logica di comparazione non deve "sapere" dei nomi di quelle classi (se non ci sono altre ragioni per cui invece dovrebbe, chiaramente). Se un giorno ti sbuca fuori una nuova classe F che ha la data di scadenza, per la tua logica non cambia proprio nulla (sempre se non ha altre ragioni per cambiare).
Altra idea: sei sicuro che non si possa mettere la nozione della data di scadenza nella classe base? Un null potrebbe indicare "nessuna scadenza". Di per sé non mi sembra proprio "sbagliato".