如果我在Kotlin:中这样做
val newInstant = Instant.now() - Duration.ofMinutes(10)
它似乎按预期工作(从当前时间减去10分钟(。
然而,我想知道这怎么可能,因为Instant
是一个java类,并且没有实现Kotlin的运算符重载函数。那么,在表达式中使用什么Kotlin机制来实现minus
运算符呢?
Instant
有public 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