如何将java.util.date初始化为空

在初始化java.util.Date变量为空时,我需要你的帮助。 当我正在运行页面时,如果我没有选择任何日期,它会显示nullpointerexception。

代码是:

private java.util.Date date2; 

我试图将该变量设为空,但它不起作用>

 private java.util.Date date2; if (date2==null || date2.equals("")) date2=""; 

但是,随着初始化:

  private java.util.Date date2= new java.util.Date(0,0,0); 

上面的代码将给出一个我不想要它的默认值。

java.util.Date的实例存储日期。 那么如何在其中存储任何内容或将其清空? 它只能存储对java.util.Date实例的引用。 如果将其null意味着它不引用任何java.util.Date实例。

你试过date2=""; 你想通过这个语句来表达你想要将String的实例引用到一个假设存储java.util.Date的变量。 这是不可能的,因为Java是强类型语言

编辑

看到发布到LastFreeNickname答案的评论后

我有一个表单,文本框中的日期文本框默认为空白,但是如果用户没有输入任何内容,则在提交数据时,它应该接受它

我建议您检查文本框是否为空。 如果它是空的,那么您可以将默认日期存储在变量或当前日期中,或者可以将其指定为null ,如下所示:

 if(textBox.getText() == null || textBox.getText().equals(""){ date2 = null; // For Null; // date2 = new Date(); For Current Date // date2 = new Date(0); For Default Date } 

此外,我可以假设您要求用户在TextBox输入日期,您使用DateFormat来解析在TextBox输入的TextBox 。 如果是这种情况,您可以简单地调用dateFormat.parse() ,如果写入日期的格式不正确或者为空字符串,则会抛出ParseException 。 在catch块中,您可以将上面的语句放在下面:

 try{ date2 = dateFormat.parse(textBox.getText()); }catch(ParseException e){ date2 = null; // For Null; // date2 = new Date(); For Current Date // date2 = new Date(0); For Default Date } 

IMO,你不能创建一个空的Date(java.util) 。 您可以使用null值创建Date对象,并可以进行空检查。

  Date date = new Date(); // Today's date and current time Date date2 = new Date(0); // Default date and time Date date3 = null; //Date object with null as value. if(null != date3) { // do your work. } 

尝试使用null值初始化。

 private java.util.Date date2 = null; 

private java.util.Date date2 = ""; 不会起作用,因为“”是一个字符串。

目前尚不清楚你希望Date逻辑如何表现? 通常,处理默认行为的一种好方法是Null Object模式 。

Date的实例始终表示日期,不能为空。 您可以使用date2的空值来表示“没有日期”。 每当使用date2时都必须检查null以避免NullPointerException,就像渲染页面时一样:

 if (date2 != null) // print date2 else // print nothing, or a default value