无法避免空值检查,但是通过一些重构,您可以使其变得更轻松。
/**
* Safely compare two dates, null being considered "greater" than a Date
* @return the earliest of the two
*/
public static Date least(Date a, Date b) {
return a == null ? b : (b == null ? a : (a.before(b) ? a : b));
}
然后结合调用:
Date earliest = least(least(a, b), c);
实际上,您可以将此方法用作任何通用方法Comparable
:
public static <T extends Comparable<T>> T least(T a, T b) {
return a == null ? b : (b == null ? a : (a.compareTo(b) < 0 ? a : b));
}