🪧
【Android】@JvmOverloads について
@JvmOverloads
は、JavaからKotlinのデフォルト値を持つクラス、または、関数を呼び出せるようにするアノテーション です。
以下のGreeting#sayHello
を呼び出すと、Java でデフォルト値はサポートされていないため、コンパイルエラーになります。
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();
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");
}
}
Discussion