Kotlin으로 생성자를 만들 때, 다음과 같이 default value를 지정할 수 있다.
data class TestDto(
val one: String = "1",
val two: String = "12",
val three: String = "123",
)
생성자를 사용하는 곳에서도 다음과 같이 파라미터를 직접 명시해서 편하게 생성자를 호출할 수 있다.
TestDto(one = "1", three = "234")
-> 이러면 two 프로퍼티에는 default value가 들어간다.
그러나 java에서 kotlin의 객체를 사용한다면?
이렇게 전체 생성자 혹은 기본 생성자만 생성할 수 있게 된다.
kotlin처럼 유연하게 생성자를 만들고 싶어서, 각 케이스별로 kotlin에 부 생성자를 정의하기에는 귀찮기도 하다.
이럴 때 유용한게 @JvmOverloads다.
data class TestDto @JvmOverloads constructor(
val one: String = "1",
val two: String = "12",
val three: String = "123",
)
다시 java 코드로 가보자.
이처럼 @JvmOverloads는 kotlin 생성자나 함수의 파라미터에 default value를 제공할 때,
자동으로 여러 개의 오버로딩 버전을 생성해주는 애노테이션이다.
다만, 다음 kotlin 코드처럼 첫 번째 & 세 번째 인자로 객체를 생성하는 생성자는 제공하지 않는다.
TestDto(one = "1", three = "234")
-> default value가 있는 파라미터 순서에 의존한 생성자들을 제공하고 있다.
'kotlin' 카테고리의 다른 글
[Kotlin] Private primary constructor is exposed via the generated 'copy()' method of a 'data' class. (0) | 2024.07.20 |
---|---|
[Kotlin] JPA 플러그인 정리 (0) | 2024.07.19 |
[Kotlin] 추가적으로 알아두어야 할 코틀린 특성 (0) | 2023.06.20 |
[Kotlin] 코틀린에서의 FP (0) | 2023.06.04 |
[Kotlin] 코틀린에서의 OOP (0) | 2023.05.07 |