Java8 Kotlin 中的时间比较

Java8 time comparison in Kotlin

我在比较 Java8 时间对象时偶然发现了一些奇怪的行为。 以下似乎不是有效代码。

val t1 = LocalTime.now()
val t2 = LocalTime.now()
val foo: Int = t1 > t2

然而,将鼠标悬停在不带波浪线的代码上显示重写的函数 return 类型是正确的:

有什么想法吗?

根据文档,当使用本机重载运算符(特别是比较运算符)时 - Kotlin 不只是调用 compareTo 而是对 0 执行 compareTo (因此最终作为布尔).

https://kotlinlang.org/docs/operator-overloading.html#comparison-operators

Comparison operators

Expression Translated to
a > b a.compareTo(b) > 0
a < b a.compareTo(b) < 0
a >= b a.compareTo(b) >= 0
a <= b a.compareTo(b) <= 0

All comparisons are translated into calls to compareTo, that is required to return Int.

您所附的文档片段确实有点令人困惑。