cherry ha scritto:
scusa non so che significhi "hai ridefinito il metodo equals?"
ridefinito?
Significa che nella tua classe devi definire un metodo con questa "firma":
public boolean equals(Object altroOggetto)
(ovviamente i nomi di parametri sono cambiabili)
E implementarlo per comparare lo "stato" dell'oggetto
this con lo "stato" dell'altro oggetto passato e dire se i due oggetti sono di contenuto "uguale".
Il parametro
deve essere Object. Generalmente/tipicamente si fa un test con l'operatore instanceOf per verificare se l'oggetto IS-A ("è-un") TuoTipo (la tua classe).
Personalmente, ti consiglio di apprendere quanto prima possibile i concetti di
override e
overload .... senza di questi ti assicuro che non vai molto "lontano" in Java.
cherry ha scritto:
poi ho fatto anche questo per vedere se una data viene prima dell'altra, ma come al solito mi sembra troppo lungo ... aiutino anche qui?
L'uso del tuo metodo 'uguali' non serve granché, puoi toglierlo .... fai già i confronti sui campi.
Lungo comunque non lo è (è assolutamente accettabile) ... insomma, il concetto è quello ed è corretto. Se vuoi puoi raggruppare il this.anno == data2.anno (noti che lo fai 2 volte?).
Ma comunque il "succo" è quello.
cherry ha scritto:
trovare la differenza tra date inserite.
C'è un modo per farlo meglio? sembra lungo
Non ho molto tempo ora per valutare bene il tuo codice ma una cosa posso dirtela subito. Invece di sdoppiare la logica per i due casi, fai in modo da avere 2 variabili in cui tenere i due oggetti e nell'ordine corretto che serve per l'algoritmo.
Io, ancora meglio, farei un metodo privato e statico che riceve 2 oggetti Data e fa la differenza. Poi nel tuo 'differenzaDate' di
istanza, se this < data2, passo a quel metodo this, data2, altrimenti passo data2, this.
Semplice, no?