kotlin如何允许在java时间对象上使用减号运算符



如果我在Kotlin:中这样做

val newInstant = Instant.now() - Duration.ofMinutes(10)

它似乎按预期工作(从当前时间减去10分钟(。

然而,我想知道这怎么可能,因为Instant是一个java类,并且没有实现Kotlin的运算符重载函数。那么,在表达式中使用什么Kotlin机制来实现minus运算符呢?

Instantpublic Instant minus(TemporalAmount amountToSubtract)方法,用作二进制运算符-

由于Java无法标记使用运算符语法有意义的方法,Kotlin允许使用任何具有正确名称和签名的Java方法作为运算符重载和其他约定(invoke((等(。不允许使用中缀调用语法调用Java方法。

https://kotlinlang.org/docs/reference/java-interop.html#operators,https://kotlinlang.org/docs/reference/operator-overloading.html

最新更新