@JvmOverloads 注解的作用就是:在有默认参数值的方法加上 @JvmOverloads 注解,则 Kotlin 就会暴露多个重载方法。
例如,没有加注解,默认参数没有起到任何作用。
kotlin
fun f(a: String, b: Int = 0, c: String = "abc") {
}
那相当于在 Java 中定义:
java
void f(String a, int b, String c) {
}
如果加上注解 @JvmOverloads,默认参数起到作用:
kotlin
fun f(a: String, b: Int = 0, c: String = "abc") {
}
// 相当于 Java 中
void f(String a)
void f(String a, int b)
void f(String a, int b, String c)