Sto usando Eclipse per generare .equals()e .hashCode(), e c'è un'opzione etichettata "Usa 'instanceof' per confrontare i tipi". L'impostazione predefinita è che questa opzione sia deselezionata e utilizzata .getClass()per confrontare i tipi. C'è qualche motivo dovrei preferire .getClass()sopra instanceof?
Senza usare instanceof:
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Utilizzando instanceof:
if (obj == null)
return false;
if (!(obj instanceof MyClass))
return false;
Di solito controllo l' instanceofopzione, quindi entro e rimuovo il if (obj == null)segno " ". (È ridondante poiché gli oggetti null falliranno sempre instanceof.) C'è qualche ragione che è una cattiva idea?
x instanceof SomeClassè falsa se loxènull. Pertanto, la seconda sintassi non necessita del controllo null.