Diciamo che abbiamo 4 classi A, B, C, D dove: A è una superclasse di entrambi B e C e C è una superclasse di D. Suppongo che, in un diagramma, dovrebbe assomigliare a questo:
A
/ \
B C
\
D
Inoltre, la classe A implementa l'interfaccia
Comparable<A>
e implementa anche un metodo
public int compareTo(A another)
Mi piacerebbe essere in grado di confrontare ogni coppia di oggetti x, y tale che siano istanze di classi dall'insieme {A, B, C, D}. Naturalmente, dovrei implementare un metodo compareTo in ciascuna di queste classi, ma per impostazione predefinita sto facendo questo con un effetto unilaterale, cioè definendo come confrontare l'oggetto c da C con b da B non dice nulla su come confrontare b con c. Ora, potrei scrivere un sacco di codice e gestire tutti questi casi (questo significa anche che dovrei usare il metodo 'isInstance' per gestirli, giusto?) Ma poi ogni due classi devono essere 'consapevoli dell'esistenza di altri . Quindi, se volessi aggiungere un'altra classe, E, tale che D sia una superclasse di E, dovrei servire tutti i casi nella nuova classe E e inoltre dovrei cambiare qualcosa nelle classi A, B, C, D per "essere consapevole di E".
Quindi mi sto sforzando di trovare una soluzione elegante, cioè che non implichi un cambiamento significativo aggiungendo una nuova classe alla gerarchia. Come posso ottenere questo?
Grazie in anticipo per l'aiuto.