【问题标题】:How to initialize java.util.date to empty如何将 java.util.date 初始化为空
【发布时间】:2015-05-11 13:09:41
【问题描述】:

在将 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);

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

【问题讨论】:

  • 制作这样的东西是个坏主意(即制作 nullPointerExceptions)。
  • date2 = "" 不起作用,因为 date2Date 而不是 String。您不能将String 分配给不是String 的变量。此外,date2.equals("") 始终为 false
  • 将 java.util.Date 变量初始化为空是什么意思?
  • @99maas 您需要一些有关 Java 和 OOP 的基本知识,特别是变量和对象引用。我建议使用 Oracle 的免费在线 Java Tutorial。并阅读 Kathy Sierra 等人的 Head First Java;虽然已经过时,但基本内容保持不变。

标签: java


【解决方案1】:

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
}

【讨论】:

  • new Date(0) 非常有用!
【解决方案2】:

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.
 }

【讨论】:

    【解决方案3】:

    尝试用空值初始化。

    private java.util.Date date2 = null;
    

    private java.util.Date date2 = ""; 也不能工作,因为 "" 是一个字符串。

    【讨论】:

      【解决方案4】:

      不清楚你希望你的日期逻辑如何表现?通常处理默认行为的好方法是Null Object pattern

      【讨论】:

      • 我有一个表单,日期文本框在文本框中默认为空白,但是在提交数据时,如果用户没有输入任何内容,它应该接受它
      【解决方案5】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-04-10
        • 2014-04-23
        • 2016-01-21
        • 2017-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-12
        • 2021-08-13
        相关资源
        最近更新 更多