在类中使用
class Test @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : View(context, attrs, defStyleAttr) {
}
或
class Test: View {
@JvmOverloads
constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : super(context, attrs, defStyleAttr)
}
以上两段代码功能一样,均使用 @JvmOverloads
来标记继承类的构造方法,因为括号内有三个参数,其中后两个都设置了默认值,所以它会产生以下三个构造函数:
Test(context: Context)
Test(context: Context, attrs: AttributeSet)
Test(context: Context, attrs: AttributeSet, defStyleAttr: Int)
在方法中使用
@JvmOverloads fun f(a: String, b: Int=0, c:String="abc"){
}
这里在方法前边标记了 @JvmOverloads
,这相当于声明了三个方法,分别是:
void f(String a)
void f(String a, int b)
void f(String a, int b, String c)