Data Class란?
데이터 클래스는 데이터 보관 목적으로 만든 클래스를 말한다.
데이터 클래스는 프로퍼티에 대한 toString(), hashCode(), equals(), copy()메소드를
자동으로 만들어 줍니다.
그래서 boilerplate code를 만들지 않아도 됩니다.
boilerplate란 표준문안 이라는 뜻
:최소한의 변경으로 재사용할 수 있는것
:적은 수정만으로 여러 곳에 활용 가능한 코드, 문구
:각종 문서에서 반복적으로 인용되는 문서의 한 부분
반복되지만 자주쓰이는 형태를 자동화한다는게 보일러플레이트의 핵심.
data class Site(val url: String, val title: String){
val description = ""
}
toString()의 인자를 보면 생성자에서 선언한 프로퍼티만 있다.
따라서 지역변수에 대한 것은 고려되지 않습니다.
데이터 클래스 특징
:데이터 클래스의 생성자는 1개 이상의 프로퍼티를 선언되어야 합니다.
:데이터 클래스의 생성자 프로퍼티는 val또는 var으로 선언해야 합니다.
:데이터 클래스에 abstract, open, sealed, inner를 붙일 수 없습니다.
:클래스에서 toString(), hashCode(), equals(), copy()를 Override하면, 그 함수는 직접 구현된 코드를 사용합니다.
:데이터 클래스는 상속 받을 수 없습니다.
copy()
객체의 복사본을 만들어 리턴합니다. 리턴되는 객체는 얕은 복사(swallow copy)로 생성됩니다.
copy()의 인자로 생성자에 정의된 프로퍼티를 넘길 수 있으며, 그 프로퍼티의 값만 변경되고 나머지 값은
동일한 객체가 생성됩니다.
ex)
val site1 = Site("test.com", "kotlin(1)")
val site2 = site1.copy(title = "kotlin(2)")
println(site1)
println(site2)
두 객체를 출력해보면 title만 변경되어 copy가 된 것을 볼 수 있습니다.
주의할 점은 copy()에 전달되는 인자는 생성자에 정의된 프로퍼티만 될 수 있습니다.
데이터 분해 및 대입(Destructuring Declarations)
val (url, title) = Site("test.com", "kotlin(1)")
//각 변수에 다음 값들이 대입됨
//url = "test.com"
//title = "kotlin(1)"
참조 :
https://codechacha.com/ko/data-classes-in-kotlin/
'코틀린 & Java' 카테고리의 다른 글
[Kotlin] Open Class란? (0) | 2022.10.25 |
---|---|
[Kotlin] Object Class란? (0) | 2022.10.25 |
[Android] Looper에 대해 알아보자 (0) | 2022.10.24 |
[Android] Java Stream에 대해 알아보자 (0) | 2022.10.24 |
[Android] 코틀린 확장 함수(kotlin extention)에 대해 알아보자 (0) | 2022.10.05 |