Kotlin/포스팅

코틀린 데이터 클래스

짜집퍼박사(짜박) 2023. 12. 31. 14:21

코틀린에서 데이터를 모델링하고 간편하게 클래스를 생성하기 위해 데이터 클래스(data class)를 제공합니다. 데이터 클래스는 데이터를 표현하는 데 특화된 클래스로, 자동으로 생성되는 몇 가지 기능을 제공하여 코드를 간결하게 작성할 수 있게 도와줍니다.

아래는 코틀린 데이터 클래스의 특징과 사용법에 대한 설명입니다.

 

1. 주 생성자에 선언된 프로퍼티들

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

위의 코드에서 Person은 name과 age라는 두 개의 프로퍼티를 가진 데이터 클래스입니다. 주 생성자에 선언된 프로퍼티들은 자동으로 읽기 전용(getter)이 생성되며, 데이터 클래스에서는 일반적으로 읽기/쓰기 메서드가 필요하지 않습니다.

 

2. 자동으로 생성되는 toString()

val person = Person("John", 25)
println(person) // 출력: Person(name=John, age=25)

데이터 클래스는 toString() 메서드를 자동으로 생성하여 객체의 내용을 문자열로 표현합니다.

 

3. 자동으로 생성되는 equals()와 hashCode()

val person1 = Person("John", 25)
val person2 = Person("John", 25)

println(person1 == person2) // 출력: true
println(person1.hashCode() == person2.hashCode()) // 출력: true

데이터 클래스는 프로퍼티 값들을 기반으로 equals()와 hashCode() 메서드를 자동으로 생성합니다.

 

4. 복사 메서드(copy())

val person = Person("John", 25)
val personCopy = person.copy()

println(person == personCopy) // 출력: true

데이터 클래스는 copy() 메서드를 제공하여 객체의 복사본을 생성할 수 있습니다. 이때, 일부 프로퍼티를 변경할 수 있습니다.

 

5. 구조 분해 선언

val person = Person("John", 25)
val (name, age) = person

println("Name: $name, Age: $age")

데이터 클래스는 구조 분해 선언을 지원하며, 이를 사용하여 객체의 각 프로퍼티에 쉽게 접근할 수 있습니다.

 

6. 프로퍼티의 기본 값

data class Person(val name: String = "", val age: Int = 0)

프로퍼티에 기본 값을 지정할 수 있습니다.

 

7. 복합 프로퍼티

data class Address(val city: String, val street: String)

data class Person(val name: String, val age: Int, val address: Address)

데이터 클래스는 다른 데이터 클래스를 포함할 수 있어 복합 프로퍼티를 정의할 수 있습니다.

데이터 클래스는 주로 데이터를 표현하는 데 사용되며, 코드를 간결하게 만들고 유지 보수성을 높일 수 있습니다.하지만, 데이터 클래스를 사용할 때에는 데이터의 불변성을 유지하는 것이 좋습니다.

 

With ChatGPT