2016-06-04 7 views
-2

Ich weiß, was eine NullPointerException ist und warum es geworfen wird, was mir unklar ist, warum es in meinem Beispiel geworfen wird, da "a" auf eine neue Instanz meiner Klasse gesetzt ist, in der der Konstruktor der Klasse weist dem TerminDate einen Wert zu.Java Nullpointer Ausnahme nach Nullprüfung

if(a==null){ 
     return false; 
    } 
    if(a.getAppointmentDate().before(Calendar.getInstance())){ 
     throw new InvalidCalendarException("date before now"); 
    } 

Bei Ausführung dieses Codes einer Nullpointer Exception in der zweiten if-Bedingung ausgelöst wird, und ich habe keine Ahnung, warum da dieser Punkt nicht in verrohrten einer Null erreicht werden soll, ist (a ist eine Instanz einer Klasse mit ein privates java.util.Calendar-Attribut). Im Konstruktor der Klasse wird das Attribut entsprechend der Eingabe gesetzt. Kann mir bitte jemand helfen? Ich habe versucht nun eine Lösung für mehrere Stunden zu bekommen :(

+1

Well I * Verdächtigen * dass 'a.getAppointmentDate mit() 'gibt null zurück. Aber wir können nicht nur mit dem Code überprüfen, den Sie angegeben haben. –

+0

Wie oben vorgeschlagen, prüfen Sie derzeit, ob das Objekt" a "null ist. Sie überprüfen jedoch nicht, ob die Methode des Objekts funktioniert ist null Wenn die Methode 'getAppointmentDate()' einen Wert zurückgibt, ist es möglich, dass diese Methode ein nu zurückgibt ll Wert. – Baleroc

+0

Dies ist eine schlechte Kodierung, Sie sollten Variablennamen für jedes Objekt verwenden, nicht nur Methodenaufrufe verketten: Date d = a.getAppointmentDate(); if (d.before (... Auf diese Weise werden Sie genau sehen, wo die Ausnahme passiert. – sigma

Antwort

0

Da a.getAppointmentDate() null zurückkehrt.

Versuchen Sie das Kontroll

if(a==null || a.getAppointmentDate() == null)