코틀린의 데이터 클래스는 특정한 행동, 동작보다는 데이터를 옮기는 데 특화된 클래스이다.
data class Student(val name: String, val age: Int, var grade: String)
이런 식으로 작성할 수 있다.
- 생성자에는 attribute가 1개 이상 필요하다.
- val, var가 아닌 파라미터는 사용할 수 없다.
- equals(), hashCode(), toString(), copy() 메소드들을 기본적으로 제공해준다.
- 구조분해가 가능하다.
{} 바디 안에 attribute와 메소드를 추가할 수도 있다.
주의
- copy()는 새로운 객체를 만들어 복사하지만, 객체 내부의 참조들은 shallow copy(얕은 복사)가 된다.
- 예를 들어 다음과 같다.
data class School(val name: String,val students: List<Student>)
val school1 = School("Korea", arrayOf(Student(...), ...))
val school2 = school1.copy()
- 위와 같은 코드에서 school1과 school2는 각각 다른 인스턴스를 참조하지만, students에 대한 참조는 같다.
- students가 만약 MutableList이라면 주의가 필요하다.
'Programming > 언어' 카테고리의 다른 글
[Kotlin] object, companion object (0) | 2023.02.26 |
---|---|
[Kotlin] Generics 공변성, 반공변성(out, in) (0) | 2023.02.26 |
[Kotlin] Collection의 View (0) | 2023.02.13 |
[Kotlin] Unit, Any, Nothing 클래스 (0) | 2023.02.12 |
[Kotlin] 타입추론 (0) | 2023.02.12 |