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