danuri
오늘의 기록
danuri
전체 방문자
오늘
어제
  • 오늘의 기록 (307)
    • java (150)
      • java (33)
      • spring (63)
      • jpa (36)
      • querydsl (7)
      • intelliJ (9)
    • kotlin (8)
    • python (24)
      • python (10)
      • data analysis (13)
      • crawling (1)
    • ddd (2)
    • chatgpt (2)
    • algorithm (33)
      • theory (9)
      • problems (23)
    • http (8)
    • git (8)
    • database (5)
    • aws (12)
    • devops (10)
      • docker (6)
      • cicd (4)
    • book (44)
      • clean code (9)
      • 도메인 주도 개발 시작하기 (10)
      • 자바 최적화 (11)
      • 마이크로서비스 패턴 (0)
      • 스프링으로 시작하는 리액티브 프로그래밍 (14)
    • tistory (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

태그

  • AWS
  • 도메인 주도 설계
  • Bitmask
  • docker
  • Jackson
  • S3
  • 트랜잭션
  • mockito
  • Java
  • Kotlin
  • Thymeleaf
  • reactive
  • 마이크로서비스패턴
  • SWAGGER
  • 자바 최적화
  • POSTGIS
  • ChatGPT
  • Saving Plans
  • Database
  • PostgreSQL
  • gitlab
  • JPA
  • nuribank
  • connection
  • DDD
  • Security
  • Spring
  • RDS
  • CICD
  • 등가속도 운동

최근 댓글

최근 글

hELLO · Designed By 정상우.
danuri

오늘의 기록

[Kotlin] @JvmOverloads - 생성자/함수 손쉽게 오버로딩
kotlin

[Kotlin] @JvmOverloads - 생성자/함수 손쉽게 오버로딩

2025. 2. 23. 23:37

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
    'kotlin' 카테고리의 다른 글
    • [Kotlin] Private primary constructor is exposed via the generated 'copy()' method of a 'data' class.
    • [Kotlin] JPA 플러그인 정리
    • [Kotlin] 추가적으로 알아두어야 할 코틀린 특성
    • [Kotlin] 코틀린에서의 FP
    danuri
    danuri
    IT 관련 정보(컴퓨터 지식, 개발)를 꾸준히 기록하는 블로그입니다.

    티스토리툴바