Programming/언어
[Kotlin] Data Class
머윤
2023. 2. 15. 22:37
코틀린의 데이터 클래스는 특정한 행동, 동작보다는 데이터를 옮기는 데 특화된 클래스이다.
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이라면 주의가 필요하다.