코틀린의 데이터 클래스는 특정한 행동, 동작보다는 데이터를 옮기는 데 특화된 클래스이다.

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

+ Recent posts