Kotlin中@JvmOverloads 註解
阿新 • • 發佈:2018-11-15
在Kotlin中@JvmOverloads註解的作用就是:
在有預設引數值的方法中使用@JvmOverloads註解,則Kotlin就會暴露多個過載方法。
可能還是雲裡霧裡,直接上程式碼,程式碼解釋一切:
如果我們再kotlin中寫如下程式碼:
fun f(a: String, b: Int = 0, c: String="abc"){
...
}
相當於在Java中宣告
void f(String a, int b, String c){
}
預設引數沒有起到任何作用。
但是如果使用的了@JvmOverloads註解:
@JvmOverloads fun f(a: String, b: Int=0, c:String="abc"){
}
相當於在Java中聲明瞭3個方法:
void f(String a)
void f(String a, int b)
void f(String a, int b, String c)
是不是很方便,再也不用寫那麼多過載方法了。
注:該註解也可用在構造方法和靜態方法。
class MyLayout: RelativeLayout {
@JvmOverloads
constructor(context:Context, attributeSet: AttributeSet? = null, defStyleAttr: Int = 0): super(context, attributeSet, defStyleAttr)
}
相當Java中的:
public class MyLayout extends RelativeLayout {
public MyLayout(Context context) {
this(context, null);
}
public MyLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
作者:ericZhong
連結:https://www.jianshu.com/p/72d1959a7c56
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。