鉴于以下 Kotlin 类:
class Foo {
public fun bar(i: Int = 0): Int = 2 * i
}
我应该如何从 java/groovy 代码中调用没有任何参数的“bar”函数?
def f = new Foo()
f.bar() //throws: java.lang.IllegalArgumentException: Parameter specified as non-null contains null
最佳答案
您现在可以在 Kotlin 中执行此操作。对于你的类方法,使用 @JvmOverloads
annotation .
class Foo {
@JvmOverloads public fun bar(name: String = "World"): String = "Hello $name!"
}
现在只需从 Java 中调用它:
Foo foo = new Foo();
System.out.println(foo.bar());
System.out.println(foo.bar("Frank"));
输出以下内容:
Hello World!
Hello Frank!
关于来自java的kotlin函数默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17348084/