【问题标题】:Java: check if datepicker has value errorJava:检查日期选择器是否有值错误
【发布时间】:2017-05-03 18:08:13
【问题描述】:

我有一个

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

如何正确检查值是否为空?

【问题讨论】:

    标签: java javafx datepicker null


    【解决方案1】:
    if (date.getValue().equals(null) { ... }
    

    如果该值确实是null,您将得到NullPointerException 异常。所以,你最好这样写:

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

    请记住,如果您使用equals,您应该确保表达式的左侧部分(调用此方法的实例)永远不会呈现null(如常量、String 文字、枚举做)。


    此外,为了简洁,您可以随意将匿名类替换为 lambda:

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

    此外,如果当前是null(例如LocalDate.now()),还有一种很好的单行方式来设置默认值:

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

    【讨论】:

      【解决方案2】:

      您不能在 null 引用上调用方法。如您所见,这将产生NullPointerException。相反,您应该使用== 运算符来检查引用是否[不是] null

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

      【讨论】:

        【解决方案3】:

        检查是否为空

        if (datePicker.getValue() == null) {
            //...
        }
        

        【讨论】:

          猜你喜欢
          • 2011-02-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-08
          • 2020-02-27
          相关资源
          最近更新 更多