JavaからKotlinのデフォルト値を持つクラス、または関数を呼び出せるようにするアノテーション。
Javaでデフォルト値はサポートされていないため、以下のGreeting#sayHello
を呼び出すとコンパイルエラーになります。
NG
class Greeting {
fun sayHello(prefix: String = "Mr.", name: String) {
println("Hello, $prefix $name")
}
}
public class JavaClass {
public static void main(String[] args) {
Greeting greeting = new Greeting();
// prefixを引数に渡していないのでエラーになる。
greeting.sayHello("Bob");
}
}
Greeting#sayHello
に@JvmOverloads
を付与することで、Javaからデフォルト値を持つ関数を呼び出せるようになります。
OK
class Greeting {
@JvmOverloads
fun sayHello(prefix: String = "Mr.", name: String) {
println("Hello, $prefix $name")
}
}
public class JavaClass {
public static void main(String[] args) {
Greeting greeting = new Greeting();
greeting.sayHello("Bob");
}
}