Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何实现带有日期的空对象模式?_Java_Design Patterns - Fatal编程技术网

Java 如何实现带有日期的空对象模式?

Java 如何实现带有日期的空对象模式?,java,design-patterns,Java,Design Patterns,我想使用for java.util.Date。我有一个函数,返回一些日期,但也可能是没有有意义的日期可以返回 我希望避免返回null,原因通常是人们希望避免null(null指针问题) 目前,我返回新日期(0)以指示“空日期”,并检查返回的日期等于(新日期(0))下游,我需要知道我是否有一个真实的日期,但我不相信这是最好的方法。我对你的要求有点困惑 如果要声明任何类型的new Date()对象,则该对象永远不会为空。我认为您要做的是避免将日期设置为null,而是创建任意日期,newdate(0)

我想使用for java.util.Date。我有一个函数,返回一些日期,但也可能是没有有意义的日期可以返回

我希望避免返回
null
,原因通常是人们希望避免null(null指针问题)


目前,我返回
新日期(0)
以指示“空日期”,并检查
返回的日期等于(新日期(0))
下游,我需要知道我是否有一个真实的日期,但我不相信这是最好的方法。

我对你的要求有点困惑

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

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

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

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
对象,我建议你创建它

请随时提供更多信息/代码以帮助进行讨论。

可选
课程 尝试使用添加到Java8中的类。证明

番石榴图书馆
该库具有类似的类型。说明。

最好先返回null,然后在使用前检查null。例如,if(date!=null)为什么不能返回null,只需检查被调用方法的返回值(例如if语句)?正确使用null并不是一件坏事。事实上,它可以帮助您在代码中找到潜在的逻辑错误。@karvoynistas我正在将返回的日期保存在另一个数据结构中,以供以后的计算和检索。日期是否“无效”对我来说是有意义的信息。因此,我不仅需要在从一个函数返回后立即检查null,还需要在代码中的许多其他地方检查null。因此,在某个地方忘记它的危险是非常真实的。@karvoynistas现在我想起来了,你可能是对的。我可能在这里引入了逻辑错误来保护空指针。我想应用,其要点是返回的对象永远不会为空,但在任何情况下都具有“安全”行为。但是在阅读了答案和评论之后,我认为可能空对象模式在这里毕竟不适用。。。另见我在问题下方的评论。我会再考虑一下。谢谢你!我同意。我不确定
空对象模式在这里是否合适,但这绝对是您应该继续考虑的一个因素。谢谢,我认为在这种情况下,确实可选是理想的选择!不幸的是,我目前只能使用较低的Java版本,我不知道在这里添加Guava依赖是否值得。但是,如果我没有这些限制,那么这对我来说确实是正确的方法。@jhyot是的,这听起来像是可选的,这正是你需要给出评论的地方。错误处理空值将导致整个应用程序因空值异常而停止。这证明添加番石榴作为一种依赖物是合理的。番石榴是一种简单的添加,没有进一步的依赖关系。番石榴还有许多其他方便的特性。所以我建议你考虑一下这条路线。