mygomii

[Kotlin] 4.3 컴파일러가 생성한 메서드: 데이터 클래스와 클래스 위임 본문

Kotlin

[Kotlin] 4.3 컴파일러가 생성한 메서드: 데이터 클래스와 클래스 위임

mygomii 2025. 4. 7. 09:00
반응형
  • 자바에서는 equals , hashcode , toString 등 비슷한 방식으로 기계적으로 구현할 수 있는 몇가지 메서드가 정의되어 있음
  • 코틀린 컴파일러는 한 걸음 더 나가서 이런 메서드를 기계적으로 생성하는 작업을 보이지 않는 곳에서 해줌

  • 코틀린의 모든 클래스는 기본적으로 최상위 클래스인 Any를 상속받으며, 이때 자동으로 다음의 세 가지 메서드가 제공
  • equals(other: Any?)
    • 기본적으로 참조(주소) 동등성 비교를 수행
    • 객체의 내용에 기반한 동등성 비교가 필요하다면 재정의가 필요
  • hashCode()
    • 객체의 해시 코드를 반환하며, equals()와의 일관성을 유지
    • equals()를 재정의하는 경우, 반드시 hashCode()도 같이 재정의해야 함
  • toString()
    • 기본 구현은 클래스 이름과 해시 코드를 포함한 문자열을 반환
    • 디버깅이나 로깅 목적으로 객체의 상태를 명확히 표현하도록 재정의할 수 있음

  • 데이터 클래스의 경우, 위의 세 메서드 외에도 프로퍼티 기반의 copy()와 componentN() 메서드가 자동으로 생성되어, 객체 비교와 복사, 구조 분해 선언이 용이해짐

  • 클래스 위임 : by 키워드 사용
    • 클래스 위임은 특정 인터페이스의 구현을 다른 객체에게 위임하는 패턴
    • 이를 위해 Kotlin에서는 by 키워드를 사용
    • 예를 들어, 어떤 클래스가 인터페이스를 구현할 때, 실제 구현은 다른 객체에 맡기고 호출은 자동으로 해당 객체의 메서드가 실행되도록 할 수 있음
반응형