它已被問過,但我還沒有找到一個體面的實現與解釋。Java:null安全的compareTo方法
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;
}
}
我讀了兩個類似的問題,我找到了;他們堅持實施另一種方法。我不明白爲什麼這不應該起作用。該方法獲取一個額外的對象,並檢查它是否有效的實例或null
,如果null
只是簡單地返回0
;什麼是最簡單的方法來實現無效安全compareTo
。
爲我工作的實施是:
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;
}
}
這不是最佳的實現應該在看什麼位置貼好人民的答案。對於我的特殊情況,這足夠體面,因爲它永遠不會爲空,但收到的對象可以爲null,並且初始實現狀態(如果其中任何一個爲null)返回0.所以,如果給定對象爲null,則返回0。
在Java中,'this'是**從不** **'null'。 –
@MattBall他可能是指** this.someInstance ** – PermGenError
這永遠不能爲空 –