[kotlin] 코틀린 데이터 클래스의 자동 생성 메서드

코틀린에서 데이터를 다루는 클래스를 간편하게 만들 수 있는 기능 중 하나는 데이터 클래스를 사용하는 것입니다.

코틀린 데이터 클래스는 data 키워드를 사용하고, 코틀린 컴파일러가 자동으로 생성해주는 여러 가지 메서드를 갖게 됩니다.

이번 포스트에서는 코틀린 데이터 클래스가 자동으로 생성하는 메서드들을 살펴보겠습니다.

equals()

코틀린 데이터 클래스는 필드를 이용해 equals() 메서드를 자동으로 만들어 줍니다. 이를 통해 두 객체의 내용이 같은지를 쉽게 비교할 수 있습니다.

data class User(val name: String, val age: Int)

val user1 = User("Alice", 25)
val user2 = User("Alice", 25)

println(user1 == user2) // true

hashCode()

데이터 클래스는 객체의 필드를 이용해 hashCode() 메서드를 자동으로 생성해줍니다. 이때 각 필드의 해시코드를 합쳐서 반환합니다.

val user = User("Bob", 30)

println(user.hashCode())

toString()

toString() 메서드는 데이터 클래스의 필드를 이용해 객체의 문자열 표현을 만들어 줍니다.

val user = User("Charlie", 28)

println(user.toString()) // User(name=Charlie, age=28)

copy()

copy() 메서드는 객체를 복사할 때 사용됩니다. 이때 일부 필드를 변경하거나 기존 객체와 동일한 값을 가지는 복사본을 만들 수 있습니다.

val user = User("David", 35)
val userWithNewAge = user.copy(age = 36)

println(userWithNewAge) // User(name=David, age=36)

componentN()

위와 같은 메서드 뿐만 아니라, 데이터 클래스는 componentN() 메서드도 자동으로 생성해 줍니다. 이를 통해 비구조화 선언(destructuring declaration)이 가능해집니다.

val user = User("Emma", 40)
val (name, age) = user

println(name) // Emma
println(age) // 40

코틀린 데이터 클래스의 자동 생성 메서드를 사용하면 데이터 클래스를 더욱 편리하게 활용할 수 있습니다.

이상으로 코틀린 데이터 클래스의 자동 생성 메서드에 대해 알아보았습니다.

코틀린 공식 문서 - 데이터 클래스