初始问题:
在Scala中,我想使用隐式Ordering[T]#Ops来比较两个LocalDate。
它只是使用像>这样的“操作符”,而不是使用isAfter。
它应该只是一个导入:import scala.math.Ordering.Implicits._
检查:
看起来它适用于LocalTime,而不是LocalDate,因为LocalTime而不是LocalDate实现了Comparable<LocalTime>。
问题:
我想知道,
LocalDate实现Comparable<ChronoLocalDate>而不是Comparable<LocalDate>的原因
发布于 2018-11-30 11:44:12
LocalDate实际上是implements Comparable<ChronoLocalDate>和ChronoLocalDate,通过实现这两个实例,它的每个实例当然都可以与另一个LocalDate实例相媲美。
您可以在甲骨文的网站上查看LocalDate。
ChronoLocalDate是由不同类型的日历实现的接口,目的是使它们都具有可比性。这是因为有JapaneseDate,ThaiBuddhistDate,HijrahDate,至少还有一个。完全不同的日历是可以互相比较的,这是很棒的。另一方面,LocalTime只是一个具有不同时区的时间表示,而不需要使用这个接口就可以与不同地区的时间表示进行比较。
发布于 2018-11-30 14:36:30
要使操作符正常工作,除了导入之外,还需要另一行,定义所需的Ordering (假设Scala2.12):
implicit val localDateOrdering: Ordering[LocalDate] = _.compareTo(_)如果您想在许多类中使用它,请在object中定义它并在必要时导入它。
https://stackoverflow.com/questions/53556656
复制相似问题