코틀린 & Java

[Kotlin] Data Class란?

코딩하는후운 2022. 10. 25. 11:24
반응형

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/

 

Kotlin - Data class 이해 및 구현 방법

데이터 클래스(Data class)는 데이터 보관 목적으로 만든 클래스를 말합니다. 데이터 클래스는 프로퍼티에 대한 toString(), hashCode(), equals(), copy() 메소드를 자동으로 만들어 줍니다. 또한 Destructuring De

codechacha.com

 

반응형