为什么 LocalDate 没有实现 Comparable<LocalDate>?
Why LocalDate doesn't implements Comparable<LocalDate>?
初始问题:
在 Scala 中,我想使用隐式 Ordering[T]#Ops
来比较两个 LocalDate
.
它只是为了像 >
一样使用 "operators" 而不是 isAfter
。
它应该只是一个导入:import scala.math.Ordering.Implicits._
检验:
看起来它适用于 LocalTime
而不适用于 LocalDate
因为 LocalTime
而不是 LocalDate
实现了 Comparable<LocalTime>
.
问题:
我想知道,
为什么 LocalDate
实现 Comparable<ChronoLocalDate>
而不是 Comparable<LocalDate>
?
LocalDate
事实上 implements Comparable<ChronoLocalDate>
以及 ChronoLocalDate
并且通过实现这两个,它的每个实例当然都可以与另一个 LocalDate
实例进行比较。
你可以看看Oracle网站上的JavaDocs for LocalDate
ChronoLocalDate
is an interface that is implemented by different types of calendars in order to make them all comparable to each other. That is because there are JapaneseDate
, ThaiBuddhistDate
, HijrahDate
至少还有一个。完全不同的日历都可以相互比较,这很棒。另一方面,LocalTime
只是具有不同时区的时间表示,只是不必采用这种界面方式即可与不同语言环境的时间表示相比较。
为了使运算符工作,除了导入之外,您只需要另一行,定义所需的 Ordering
(假设 Scala 2.12):
implicit val localDateOrdering: Ordering[LocalDate] = _.compareTo(_)
如果您想在多个 类 中使用它,请在 object
中定义它并在必要时导入。
初始问题:
在 Scala 中,我想使用隐式 Ordering[T]#Ops
来比较两个 LocalDate
.
它只是为了像 >
一样使用 "operators" 而不是 isAfter
。
它应该只是一个导入:import scala.math.Ordering.Implicits._
检验:
看起来它适用于 LocalTime
而不适用于 LocalDate
因为 LocalTime
而不是 LocalDate
实现了 Comparable<LocalTime>
.
问题:
我想知道,
为什么 LocalDate
实现 Comparable<ChronoLocalDate>
而不是 Comparable<LocalDate>
?
LocalDate
事实上 implements Comparable<ChronoLocalDate>
以及 ChronoLocalDate
并且通过实现这两个,它的每个实例当然都可以与另一个 LocalDate
实例进行比较。
你可以看看Oracle网站上的JavaDocs for LocalDate
ChronoLocalDate
is an interface that is implemented by different types of calendars in order to make them all comparable to each other. That is because there are JapaneseDate
, ThaiBuddhistDate
, HijrahDate
至少还有一个。完全不同的日历都可以相互比较,这很棒。另一方面,LocalTime
只是具有不同时区的时间表示,只是不必采用这种界面方式即可与不同语言环境的时间表示相比较。
为了使运算符工作,除了导入之外,您只需要另一行,定义所需的 Ordering
(假设 Scala 2.12):
implicit val localDateOrdering: Ordering[LocalDate] = _.compareTo(_)
如果您想在多个 类 中使用它,请在 object
中定义它并在必要时导入。