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
.
您所附的文档片段确实有点令人困惑。
我在比较 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 returnInt
.
您所附的文档片段确实有点令人困惑。