2016-12-18 1 views
3

У меня естьJava: проверить, если DatePicker имеет ошибку значение

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

поле по-прежнему вручную редактируется, так что вы можете просто удалить начальное установленное значение.

У меня есть кнопка, с помощью которой я хочу проверить, пусто ли значение DatePicker. Но когда я if(date.getValue().equals(null), я получаю 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 
     } 
    } 
    }); 

Как правильно проверить, если значение пусто?

ответ

1

Вы не можете вызывать методы в null ссылки. Как вы видели, это создало бы NullPointerException. Вместо этого вы должны использовать оператора ==, чтобы проверить, что ссылка [нет] null:

if (date.getValue() == null) { 
    // Here --------^ 
1

Проверка на нуль с

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

Если значение действительно null, вы получите NullPointerException исключение. Таким образом, вы бы лучше писать так:

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

Имейте в виду, что если вы используете equals, вы должны быть уверены, что левая часть выражения (экземпляр этот метод вызывается) никогда не представляет null (подобный константы, String литералы, перечисления делаю).


Кроме того, вы можете заменить анонимный класс с лямбда для лаконичности:

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

Кроме того, есть хороший однострочный способ установить значение по умолчанию, если ток является nullLocalDate.now(), например):

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