给定以下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类:
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
You can do this now in Kotlin. For your class method, use the @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"));
Outputs the following:
你好,世界!
Hello Frank!