一、注解定义
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CONSTRUCTOR)
@Retention(AnnotationRetention.BINARY)
@MustBeDocumented
public actual annotation class JvmOverloads
注解说明:指示Kotlin编译器为这个函数生成替代默认参数值的重载。
使用说明:该注解可以用在方法前,可以用在构造函数前。
二、举例说明
@JvmOverloads fun test(a: Int, b: Int = 0, c: String = "")
此时编译器将生成三个方法
public final void test(int a)
public final void test(int a, int b)
public final void test(int a, int b, String c)
三、应用场景:自定义 View 重载构造方法
图1 JvmOverloads 在自定义 View 时的使用
在使用 JvmOverloads 注解后,将生成三个构造方法,并分别调用 super 的构造方法。
但需要注意的是:defStyleAttr 的这个参数,这个参数是含有默认主题样式的,可以视情况更改这个默认值。具体请参照另一篇文章对于 defStyleAttr 的说明【Android】自定义 View 中 defStyleAttr 的用法