È stato chiesto in precedenza, ma non ho trovato un'implementazione decente con una spiegazione.Java: metodo di confronto Null safe
public int compareTo(Object o)
{
if (this == null || o == null)
{
return 0;
}
Tok tmp = (Tok) o;
if (this.rang < tmp.rang)
{
return -1;
} else if (this.rang > tmp.rang) {
return 1;
} else {
return 0;
}
}
Ho letto due domande simili che ho trovato ancora; insistono per implementare un altro metodo. Non capisco perché questo non dovrebbe funzionare. Il metodo ottiene un oggetto aggiuntivo e controlla se è un'istanza valida o null
, se null
restituisce semplicemente 0
; quale sarebbe il modo più semplice per implementare la sicurezza n. compareTo
.
L'implementazione che ha funzionato per me è stato:
public int compareTo(Object o)
{
if (o == null)
{
return 0;
}
Tok tmp = (Tok) o;
if (this.rang < tmp.rang)
{
return -1;
} else if (this.rang > tmp.rang) {
return 1;
} else {
return 0;
}
}
non è l'attuazione ottimale si dovrebbe guardare a ciò che le persone buone pubblicati qui le risposte. Per il mio caso particolare questo è stato abbastanza decente in quanto questo non è mai nullo eppure l'oggetto ricevuto può essere nullo e l'implementazione iniziale indica se uno dei due è null return 0. Quindi se l'oggetto dato è nullo 0 viene restituito.
'questo 'è ** mai **' null' in Java. –
@MattBall probabilmente intendeva ** this.someInstance ** – PermGenError
questo non può mai essere nullo –