@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를-일일이-상속받아-만들기-귀찮다면