Java:检查日期选择器是不是有值错误

Posted

技术标签:

【中文标题】Java:检查日期选择器是不是有值错误【英文标题】: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
         
     
   );

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

【问题讨论】:

【参考方案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) 
    //...

【讨论】:

以上是关于Java:检查日期选择器是不是有值错误的主要内容,如果未能解决你的问题,请参考以下文章

如何检查日期范围选择器中的日期是不是更改?

JAVA中的日期和时间选择器[关闭]

javaFx 是不是有可用的日期和时间选择器?

未捕获的类型错误:未定义不是日期选择器引导程序的函数

在日期选择器中选择日期之前触发功能

角日期选择器在IE中显示错误的年份(而不是2019年显示的是1919)