以前にも質問されましたが、説明のある適切な実装が見つかりませんでした。
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;
}
}
私はまだ見つけた 2 つの同様の質問を読みました。彼らは別の方法を実装することを主張します。これが機能しない理由がわかりません。メソッドは追加のオブジェクトを取得し、それが有効なインスタンスかどうかをチェック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;
}
}
善良な人々がここに回答として投稿したものを調べる必要があるのは、最適な実装ではありません。私の特定のケースでは、これはnullになることはありませんが、受信したオブジェクトはnullになる可能性があり、どちらかがnullの場合は0を返す初期実装状態であるため、これで十分でした。したがって、指定されたオブジェクトがnullの場合は0が返されます。