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' instanceof
opzione, 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.