본문 바로가기
카테고리 없음

코틀린에서 @RequiredArgsConstructor

by sinabeuro 2023. 6. 12.
728x90

 

@RequiredArgsConstructor 애노테이션과 유사한 기능을 구현하기 위해 data class와 @JvmOverloads 애노테이션을 사용할 수 있습니다. data class는 Lombok의 @RequiredArgsConstructor와 유사한 불변성을 제공하며, @JvmOverloads는 자동으로 오버로딩된 생성자를 생성할 수 있도록 합니다.

dependencies {
    implementation 'org.projectlombok:lombok:1.18.20'
    kapt 'org.projectlombok:lombok:1.18.20'
}
@NoArgsConstructor
data class MyClass(val param1: String, val param2: Int) {
    @JvmOverloads
    constructor(param1: String) : this(param1, 0)
}

 

위의 예제에서는 data class인 MyClass를 정의하고, 기본 생성자에 param1과 param2를 포함한 프로퍼티를 정의합니다. 또한, @NoArgsConstructor 애노테이션을 사용하여 인자가 없는 기본 생성자를 생성됩니다.

@JvmOverloads 애노테이션을 사용하여 오버로딩된 생성자를 자동으로 생성하도록 할 수 있습니다.

예로들어, MyClass를 생성할 때는 다음과 같이 사용할 수 있습니다.

val obj1 = MyClass("value1", 10)
val obj2 = MyClass("value2")
728x90

댓글