【问题标题】:before() failing while comparing with nullsbefore() 在与空值比较时失败
【发布时间】:2015-06-26 14:23:11
【问题描述】:

我正在使用.before() 函数来确保旧值小于新值,但问题是我允许用户在这两个值中的任何一个中有空值,所以当.before() 将值与null... 失败了。

我的代码:

public getDetails(Calendar older, Calendar newer) {
    if (older.before(newer)) {
        System.out.println("Works");
    } else {
        System.out.println("Works");
    }
}

我想到的另一种方法是检查任何值是否为 null 并让函数通过。

所以我尝试了:

if ((older || newer) == null || older.before(newer))

有没有更简洁更快捷的方法来做到这一点?

【问题讨论】:

  • 您允许用户输入null 有什么特别的原因吗?处理这种情况似乎不是您的功能目的的一部分,因此您可能根本不应该允许它发生。
  • @RedRoboHood 是的,我正在处理空值以提取不同的列表,因此用户可以将其中一个或两个都作为空值
  • “拉不同的列表”是什么意思?
  • @RedRoboHood 例如,如果未输入较新的日期。我正在提取一个列表,其中包括截至旧日期等的所有详细信息。

标签: java function if-statement logic


【解决方案1】:

不传递 null 更好...Java 8 可以选择 Optional... 这意味着不能提供任何值... Optional.isPresent()...

您提供的代码不起作用,因为首先比较旧的和新的,然后它们的结果为 null,同时 old.before(newer)

if ((older || newer) == null || older.before(newer))

这应该可以,一次比较

if( older==null || newer==null || older.before(newer))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多