Java 8日期等于null安全

时间:2018-11-06 15:58:08

标签: java java-8 java-date

哪个是检查两个Date()对象是否相等且具有null安全功能的最佳方法? 日期d1 日期d2

d1 = null, d2 = new Date() => equal false
d1 = null, d2 = null => equal true
d1 = SAME_INSTANT, d2 = SAME_INSTANT => equal true
d1 = new Date(), d2 = YESTERDAY => equal false

3 个答案:

答案 0 :(得分:4)

使用Objects.equals(d1, d2)

  

如果参数彼此相等,则返回true,否则返回false。因此,如果两个参数都为null,则返回true;如果正好一个参数为null,则返回false。否则,将使用第一个参数的equals方法确定相等性。

答案 1 :(得分:3)

自Java-7起,使用:

Objects::equals

如果可以,请停止使用java.util.Date;当您需要Instant时使用Date-更易于使用,并且更不易出错。

答案 2 :(得分:0)

Optional.ofNullable(d1).map(d -> d.equals(d2)).orElseGet(() -> d2 == null);

在其中任何一个为空时都有效