커스텀 뷰를 생성할때, 생성자 오버로딩이 필수적이다.
그 부분을 어노테이션이 대신해 준다.
java
public class CustomView extends View {
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, AttributeSet attr) {
super(context, attr);
}
// ... etc
}
kotlin
class CustomView : View {
constructor(context: Context) : super(context)
constructor(context: Context, attr: AttributeSet) : super(context, attr)
}
// ... etc
constructor을 사용하여 자바와 비슷한 코드를 만들 수 있지만
@JvmOverloads 어노케이션을 사용하면 간결하게 생성자 오버로딩을 지원한다.
class CustomView @JvmOverloads constructor(
context: Context,
attr:AttributeSet? = null
) : View(context, attr) {
// ... etc
}