如何用Date实现Null对象模式?

时间:2014-10-22 14:07:10

标签: java design-patterns

我想将Null Object Pattern用于java.util.Date。我有一个返回一些Date的函数,但也可能是没有返回有意义的Date。

我想避免返回null,原因是人们为什么要避免空值(nullpointer问题)。

目前我正在返回new Date(0)以表示" null日期"并检查returnedDate.equals(new Date(0))下游我需要知道我是否有真实日期,但我不相信这是最好的方式。

2 个答案:

答案 0 :(得分:3)

Optional Class

尝试使用添加到Java 8的Optional类。This article演示。

番石榴图书馆

Google Guava库的类型相似。 This article解释道。

答案 1 :(得分:0)

我对你提出的要求感到有些困惑。

如果要声明任何类型的new Date()对象,则该对象永远不会为空。我认为你要做的是避免将Date设置为null,而是创建一个任意日期,new Date(0)以便稍后在你的程序中使用。

我会反对这种做法,我不认为这是最好的方式。

我的建议是将对象保持为null并进行某种检查:

Date date;
if(date != null)
{
    // code goes here
}

从本质上讲,你 - 我认为 - 已经在进行这项检查(检查任意日期对象)。

提醒一下,以下是Java Date类中定义的以下日期参数:

// Creates today's date/time
Date()

// Creates a date
Date(long)
Date(int, int, int)
Date(int, int, int, int, int)
Date(int, int, int, int, int, int)
Date(String)

一旦你有足够的信息来创建程序下游的Date对象,我建议你创建它。

随意提供更多信息/更多代码以帮助讨论。