我需要你的帮助,将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);
上面的代码会给我一个我不想要的默认值。
答案 0 :(得分:14)
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
中输入的文字。如果是这种情况,您可以简单地调用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
}
答案 1 :(得分:5)
IMO,您无法创建空Date(java.util)
。您可以使用Date
值创建null
对象,并可以进行空检查。
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.
}
答案 2 :(得分:1)
尝试使用空值初始化。
private java.util.Date date2 = null;
同样private java.util.Date date2 = "";
不能用作""是一个字符串。
答案 3 :(得分:0)
您不清楚希望日期逻辑如何表现?通常,处理默认行为的一种好方法是Null Object pattern。
答案 4 :(得分:0)
Date的实例始终表示日期,不能为空。您可以使用date2的空值来表示"没有日期"。每当使用date2时都必须检查null以避免NullPointerException,就像渲染页面时一样:
if (date2 != null)
// print date2
else
// print nothing, or a default value