Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Equals

  1. #1

    Equals

    Buongiorno ragazzi qualcuno sarebbe così gentile da spiegarmi come si usa il metodo equals, perchè ho alcuni esercizi già risolti dove vedo che è stata usata una scrittura di questo genere:

    public boolean equals(Object o)
    { if(o==this)
    return true;
    if(!(o instanceof Lista)) // Lista è una classe del programmino
    return false;
    Lista ord=(Lista)o;
    return p.equals(ord.p) && x==ord.x;
    }

    io non capisco a cosa serva di preciso questa scrittura, e poi vorrei sapere se ho capito l'uso dell'operatore instanceof:
    se o non è un istanza di lista ritorna falso?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da Gaucho10 Visualizza il messaggio
    io non capisco a cosa serva di preciso questa scrittura
    Il metodo tecnicamente è corretto. Non so ovviamente cosa siano p e x in Lista.

    Il test iniziale o==this è solo una scorciatoia/ottimizzazione. Se l'oggetto passato è esattamente lo stesso identico su cui è invocato equals, il risultato è ovviamente true, non c'è da perdere tempo a fare altri controlli/confronti.

    Poi generalmente si usa instanceof. Se non supera questo controllo, allora l'oggetto passato NON è certo di tipo Lista, quindi si deve restituire false. Altrimenti si fa il cast a Lista e si fanno i confronti tra gli attributi dei due oggetti.

    Quote Originariamente inviata da Gaucho10 Visualizza il messaggio
    e poi vorrei sapere se ho capito l'uso dell'operatore instanceof:
    se o non è un istanza di lista ritorna falso?
    rifoggetto instanceof Tipo

    serve per verificare se l'oggetto referenziato da rifoggetto soddisfa la relazione IS-A ("è-un") rispetto a Tipo. String è-un Object, Integer è-un Number, ecc...
    Se rifoggetto non soddisfa tale relazione o se rifoggetto è un reference null, il risultato di instanceof è false (non causa alcuna eccezione).
    Ultima modifica di andbin; 20-01-2018 a 15:20
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.