对于使用Comparable< StockQuote >
类型的StockQuote
属性实现LocalDateTime
的when
类……
public class StockQuote implements Comparable< StockQuote >
{
private LocalDateTime when;
…
}
...以下Comparable::compareTo
的实现是否足够?
@Override
public int compareTo ( StockQuote that )
{
return this == that ? 0 : this.getWhen().compareTo( that.getWhen() );
}
首先使用this == that
检查对象身份,并声明相等性:
如果不相同相同,则此代码将that
强制转换为期望的类型,并从两者中提取when
对象。然后,我们返回调用内置LocalDateTime::compareTo
方法的结果。如果this
或that
为空,但不是两个都为空,则会抛出NullPointerException
。
我想知道要使用Objects.compareTo
还是Comparator.comparing
。
答案 0 :(得分:1)
Per the Java API,如果compareTo
的参数为null,则应该抛出NullPointerException
。
抛出:
NullPointerException
-如果指定的对象为空
==
检查是允许的优化,但不是必需的。您可以推迟到LocalDate.compareTo()
并称之为一天:
return this.getWhen().compareTo( that.getWhen() );
您还可以抛弃吸气剂并直接访问.when
。
return this.when.compareTo( that.when );