以前有人问过,但我还没有找到一个体面的实现和解释。
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
;什么是实现 null-safe 的最简单方法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;
}
}
这不是最佳实施,人们应该关注这里发布的好人作为答案。对于我的特殊情况,这已经足够了,因为它永远不会为空,但接收到的对象可以是空的,并且初始实现状态是否为空返回 0。因此,如果给定对象为空,则返回 0。