다양한 클래스를 다루는 방법

parkrootseok·2025년 8월 7일
0

코틀린

목록 보기
12/15
post-thumbnail

Data Class

Kotlin에서는 data라는 지시어를 Class 앞에 명시하여 DTO Class를 매우 간결하게 정의할 수 있습니다.

아래는 Java로 작성된 DTO Class입니다. Getter, Constructor, Equlas 등으로 인해 코드가 장황하고, 이를 보완하기 위해선 Lombok 어노테이션을 선언하는 추가적인 조치가 필요합니다.

하지만, Kotlin에서는 data 키워드를 명시하면 eqauls, hashCode, toString 등을 자동으로 만들어주기 때문에 아래와 같이 간결하게 작성할 수 있습니다.

또한, Kotlin은 아래와 같이 Named Argument를 지원하기 때문에 Builder 패턴까지 활용하는 것 같은 효과를 받을 수 있습니다.

Enum Class

Kotlin에서의 Enum Class는 코드 작성에 있어서는 Java와 별 다른 차이가 없습니다.

하지만, Enum을 활용한 코드에 대한 가독성 측면에서는 차이가 존재합니다. Kotlin에서는 아래와 같이 when을 사용하면 컴파일러가 Enum Class에 대한 모든 타입을 알고 있기 때문에, 다른 타입에 대한 예외 처리 로직(else 문) 작성이 불필요합니다.

또한, Kotlin에서는 아래와 같이 Enum Class에 열거 상수 이름을 추가한 후 반영하지 않은 경우 warning을 주지만 Java는 그렇지 않습니다.

Sealed Class

Sealed Class는 상속을 위한 추상 클래스를 정의했을 때, 이를 외부에서도 상속 받아 활용하는 것을 막기 위해 만들어진 Class입니다. 즉, 외부에서 추상 클래스를 상속하는 것을 막고자 '우리가 작성한 클래스만 하위 클래스가 될 수 있도록 봉인한 것'입니다. 이에 따른 Sealed Class의 특징은 다음과 같습니다.

  • 컴파일 타임에 하위 클래스의 타입을 모두 기억하여 런타임에서 클래스 타입이 추가 불가
  • 하위 클래스는 같은 패키지에 존재해야 함

아래는 Sealed Class 작성 예시입니다.

또한, Sealed Class는 컴파일 타임 때 하위 클래스 타입을 모두 기억하고 있다는 특징이 있기 때문에 아래와 같이 when과 같이 활용활 때 매우 유용합니다.

profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글