Iron ha scritto:
La mia domanda è: il metodo equals usato a cosa serve e come si usa, quel "this ==o"cos'è? "this" a chi si riferisce?
gentilmente qualcuno che mi spieghi in modo molto dettagliato il metodo equals grazie
Il metodo equals serve per verificare se due oggetti sono di "significato" (contenuto) equivalente. Perché con gli oggetti il == si basa solo sulla identità degli oggetti stessi e non sul loro contenuto.
equals è definito originariamente in java.lang.Object e in una classe si può ridefinire (override) come hai fatto tu, esattamente con quella forma (a parte il nome del parametro):
public boolean equals(Object o)
Il parametro
deve restare Object, altrimenti non è un override corretto.
La prima parte che hai scritto
if(this == o)
return true;
è semplicemente una ottimizzazione. Se l'oggetto passato è, per qualche motivo, lo stesso su cui si invoca il equals, non c'è bisogno di testare altro, è sicuramente "uguale".
Poi è tipico usare instanceof per verificare il tipo. Se instanceof dà false, è bene restituire false senza altri test. Se invece l'oggetto è del tipo voluto, si fanno i confronti tra gli attributi dei due oggetti, uno è il
this, l'altro è l'argomento (convertito al tipo specifico).
P.S. per il "tipo" del numero presumo intendi es. fisso, mobile, ecc... Per questo si potrebbe usare molto meglio una
enum. Se non conosci le enum, ok, usa pure String.
P.S. 2. Se si ridefinisce equals(), generalmente è bene ridefinire anche hashCode() per mantenere corretto il "contratto" che ci deve essere tra questi due metodi.