有没有办法声明一个java方法作为kotlin的中缀[复制]

问题描述 投票:2回答:2

这个问题在这里已有答案:

有没有办法从java类声明一个方法,以便它可以从kotlin调用为infix函数,如下所示:

public class Foo {
  public void doFoo (String bar) {}
}

然后从kotlin文件

foo doFoo "bar"
java kotlin dsl
2个回答
5
投票

As of Kotlin 1.3, no:

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


2
投票

您可以添加infix扩展来从Kotlin获取该语法:

infix fun Foo.doFoo(bar: String) {
    return doFoo(bar)
}
© www.soinside.com 2019 - 2024. All rights reserved.