Java: null sicher compareTo-Methode

Es wurde vorher gefragt, aber ich habe nicht gefunden, einen anständigen Umsetzung mit einer Erklärung.

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;
    }
}

Lese ich zwei ähnliche Fragen habe ich trotzdem gefunden; Sie bestehen auf der Durchführung einer anderen Methode. Ich verstehe nicht, warum das nicht funktionieren sollte. Die Methode bekommt ein extra-Objekt und prüft es, wenn Ihr eine gültige Instanz oder null, wenn null einfach zurück 0; was wäre die einfachste Möglichkeit zum implementieren von null-sicher compareTo.

Umsetzung, die für mich gearbeitet wurde:

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;
    }
}

Es ist nicht die optimale Umsetzung sollte man suchen in dem, was gute Leute hier gepostet als Antworten. Für meinem speziellen Fall war anständig genug, wie das ist, nie null noch das Objekt empfangen werden können, null und die erste Implementierung Staaten, wenn entweder null ist return 0. Also, wenn ein bestimmtes Objekt null ist, wird 0 zurückgegeben.

this nie null in Java.
er meinte wohl diese.someInstance
dies kann nie null sein
Sie brauchen nicht zu "innovieren" in compareTo, aka das Rad neu erfinden. Wenn Sie eine IDE-es wird wahrscheinlich tun es für Sie, so dass Sie wählen Sie die Variablen, die Sie verwenden möchten. Ansonsten betrachten Sie mit Guave - ComparisonChain. Wenn Sie zufrieden mit Ihrer eigenen Umsetzung, jedoch würde ich diejenigen loswerden, die Neubauten für ein sauberer code.
dies sollte compareTo(Tok o), kein cast

InformationsquelleAutor Sterling Duchess | 2012-11-22

Schreibe einen Kommentar