Ho una classe che è un multitono, quindi so che data una chiave particolare, non ci saranno mai due istanze della stessa classe che esistono. Ciò significa che, invece di:Annotazione di una classe Java come sicura per il confronto di riferimento
if (someObject.equals(anotherObject))
... è sicuro per me fare questo:
if (someObject == anotherObject)
La classe è anche final
, quindi so che nulla relative al polimorfismo potrebbe causare problemi per paragone
IDEA mi informa doverosamente che è rischioso confrontare due istanze direttamente e che dovrei usare .equals()
, ma so che non è in questo caso. C'è qualche annotazione che posso applicare alla mia classe per istruire IDEA, e potenzialmente altri editor e, soprattutto, altri utenti, che un confronto diretto di riferimento per l'uguaglianza sulle istanze della mia classe sia sicuro?
So che potrei solo dire a IDEA di sopprimere l'avviso, ma dovrei farlo per ogni confronto tra questi due tipi o globalmente, nessuna delle quali è una buona idea. Inoltre, è più importante che lascio che gli utenti della mia classe sappiano che è sicuro, più veloce e persino preferito (convincimi altrimenti) oltre il .equals()
.
Oh, e la serializzazione o altri shenanigans non dovrebbero essere applicati qui. L'oggetto è sempre e solo costruito da me, non incidentalmente attraverso altri mezzi come la deserializzazione. Questa è un'applicazione GWT che significa anche che qualsiasi cosa relativa al multithreading non si applica. – user3466413
Qui proverò a discutere di '.equals' qui: Se hai solo' .equals' si riferisce all'eguaglianza di riferimento, dovrebbe ottimizzare a '==', e gli utenti non devono ricordare che alcuni oggetti sono okay con '==' e altri no. Possono semplicemente usare '.equals' ovunque e avranno le stesse buone prestazioni di' == '. –
@LouisWasserman Ma allora devi fare attenzione che i tuoi riferimenti non siano nulli. O almeno che la tua mano sinistra non lo è. – RealSkeptic