2016-12-18 10 views
3

Ich habe einJava: überprüfen, ob picker Wert Fehler hat

DatePicker date = new DatePicker(); 
date.setValue(LocalDate.now()); 

Das Feld immer noch manuell bearbeitet werden kann, so dass Sie nur den Anfangssollwert entfernen.

Ich habe eine Schaltfläche mit der ich überprüfen möchte, ob der Wert DatePicker leer ist. Aber wenn ich if(date.getValue().equals(null) tun, erhalte ich eine java.lang.NullPointerException:

Button btn = new Button(); 
btn.setOnAction(new EventHandler<ActionEvent>() { 
    @Override 
    public void handle(ActionEvent evt) { 
     if(date.getValue().equals(null) { 
      // do something 
     } 
    } 
    }); 

Wie kann ich richtig prüfen, ob der Wert leer ist?

Antwort

1

können Sie nicht Methoden aufrufen, auf einem null Referenz. Wie Sie gesehen haben, würde das eine NullPointerException produzieren. Stattdessen sollten Sie den Operator == verwenden, um zu überprüfen, dass die Referenz [nicht] null:

ist
1

prüfen null mit

if (datePicker.getValue() == null) { 
    //... 
} 
1
if (date.getValue().equals(null) { ... } 

Wenn der Wert ist wirklich ein null, erhalten Sie eine NullPointerException Exception. Also, sollten Sie besser schreiben wie:

if (date.getValue() == null) { ... } 

Denken Sie daran, wenn Sie equals verwenden, sollten Sie sicher sein, dass der linke Teil eines Ausdrucks (eine Instanz diese Methode aufgerufen wird) nie präsentiert eine null (wie Konstanten, String Literale, Enums tun).


Außerdem können Sie eine anonyme Klasse mit einer Lambda für Prägnanz ersetzen:

btn.setOnAction(event -> { ... }); 

Darüber hinaus gibt es eine gute einzeilige Art und Weise einen Standardwert gesetzt, wenn der Strom ein null ist (zu LocalDate.now(), zum Beispiel):

datePicker.setValue(Optional.ofNullable(datePicker.getValue()).orElse(LocalDate.now())); 
Verwandte Themen