Java: vermeiden Sie null-in geschachtelten Klassen (Tief-Null-Prüfung)

Vorstellen, habe ich eine Klasse Familie. Es enthält eine Liste von Personen. Jede (Klassen -) Person enthält (Klasse) - Adresse. Jede (Klassen -) Adresse enthält (Klasse) PLZ. Alle "zwischen" - Klasse kann null sein.

So, gibt es eine einfache Methode, um PostalCode ohne vorher zu prüfen, für die null in jedem Schritt? also, gibt es eine Möglichkeit zu vermeiden, die folgenden daisy-chaining-code? Ich weiß, es ist nicht "native" Java-Lösung, aber hatte gehofft, wenn jemand weiß, eine Bibliothek oder so etwas. (geprüft Commons & Guave und nicht alles sehen)

if(family != null) {
    if(family.getPeople() != null) {
        if(family.people.get(0) != null) {
            if(people.get(0).getAddress() != null) {
                if(people.get(0).getAddress().getPostalCode() != null) {
                    //FINALLY MADE IT TO DO SOMETHING!!!
                }
            }
        }
    }
}

Nein, können nicht ändern die Struktur. Es ist ein service, den ich nicht kontrollieren.

Nein, ich kann nicht mit Groovy und es ist praktisch "Elvis" - operator.

Nein, ich würde es vorziehen, nicht zu warten, bis Java 8 😀

Ich kann nicht glauben, ich bin der erste dev jemals krank 'n müde, Sie code schreiben, wie diese, aber ich habe nicht in der Lage, eine Lösung zu finden.

Ideen?

Dank

--

llappall

  • Sorry, du bist zu stecken. Einige Leute benutzen den trinary bedingte operator, um es ein wenig weniger dicht, aber es ist immer noch der gleiche bytecode, nur schwerer zu Lesen.
  • "Ich kann nicht glauben, ich bin der erste dev jemals krank 'n müde von schreiben von code wie dieser" Nun, das sind Sie nicht.
  • Sicher. Aber ich glaube nicht, dass Sie können mehr beaty den code! Sorry!
  • Trotz all der Antworten, die sagen, Sie ignorieren null-Prüfungen und versuchen Sie einfach zu fangen NullPointerException, tun Sie es nicht! Ihr code möglicherweise ein Dorn im Auge, aber eine Ausnahme ist, eine teure operation, die Sie wollen immer zu vermeiden, wenn Sie können.
  • Bedenken Sie auch, all die guten Dinge, die Sie tun können, im "else" - Klauseln, wenn Sie Sie in Platz - error-messaging, alternativen code-Pfade, etc. Angesichts all das, es wird nicht so schlimm.
  • Wenn nur Sie könnten port Brototype für Java - ... github.com/letsgetrandy/brototype

InformationsquelleAutor llappall | 2012-04-30
Schreibe einen Kommentar