Comparable :: compareTo的最简单实现

时间:2019-05-08 22:04:24

标签: java comparable

对于使用Comparable< StockQuote >类型的StockQuote属性实现LocalDateTimewhen类……

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方法的结果。如果thisthat为空,但不是两个都为空,则会抛出NullPointerException

我想知道要使用Objects.compareTo还是Comparator.comparing

1 个答案:

答案 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 );