컴퓨터공부/Kotlin & Java

@JvmOverloads: constructor 가 해주는 것

achivenKakao 2021. 5. 27. 15:36

@JvmOverloads 어노테이션을 사용하면 여러 개의 constructor를 상속받는 번거로움이 줄어들고, xml inflation 시에도 문제가 발생하지 않는다.

 

constructor를 직접 작성한 버전

class CustomView: View {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attrs, defStyleAttr)
}

 

@JvmOverloads가 적용된 버전

class CustomView @JvmOverloads constructor(
    context: Context,
    attrs: AttributeSet? = null,
    @AttrRes defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr, defStyleRes)

 

 



출처: https://holika.tistory.com/entry/내-맘대로-정리한-Kotlin-JvmOverloads-constructor를-일일이-상속받아-만들기-귀찮다면