728x90
DataClass
데이터를 다루는 데에 최적화된 class
5가지의 메서드를 자동으로 생성해줍니다.
일반클래스로는 구현해서 사용해야할 메서드를 자동으로 생성해주니 아주 편리하다.
DataClass 5가지 메서드
위에서 말했듯이 자동으로 생성해 준다. 구현할 필요가 없다.
1. equals() : 내용의 동일성 판단
2. hashcode() : 객체의 내용에서 고유한 코드를 생성
3. toString() : 포함된 속성을 보기쉽게 나타냄
4. copy() : 객체를 복사하여 똑같은 내용의 새 객체를 만듬
5. componentX() : 속성을 순서대로 반환
fun main() {
println("*****일반 클래스*****\n")
val a = General("홍길동",22)
println(a == General("홍길동", 22))
println(a.hashCode())
println(a.toString()) //toString() 생략가능
println("\n*****dataClass*****\n")
val b = DataClassGeneral("김철수", 23)
println(b == DataClassGeneral("김철수", 23))
println(b === DataClassGeneral("김철수", 23))
println(b.hashCode())
println(b.toString()) //toString() 생략가능
println(b.copy())
println(b.copy(name = "이철수"))
println(b.copy(age = 24))
}
class General(val name: String, val age : Int)
data class DataClassGeneral(val name: String, val age : Int)
일반 class의 equals() -> == 이걸로 표현가능
일반 클래스로 == 비교를하면 주소가 같은지 비교한다 (결과 false)
일반 클래스로 toString() 을 하면 의미없는 데이터를 넘겨준다.
data class로 == 비교를 하면 이미 equals가 자동으로 구현되었기 때문에 주소값 비교가 아닌 내용 비교를 한다 (결과 true)
data class로 주소비교를 하고싶으면 === 를 하면된다 (3개)
data class로 toString()을 하면 포함된 속성의 정보를 보여준다.
fun main() {
val list = ArrayList<DataClassGeneral>()
list.add(DataClassGeneral("홍길동", 22))
list.add(DataClassGeneral("김철수", 33))
list.add(DataClassGeneral("배유리", 44))
for ((a,b) in list) {
println("$a, $b")
}
}
data class DataClassGeneral(val name: String, val age : Int)
component1() a에 들어간다. ("홍길동")
componet2() b에 들어간다. (22)
'Android-Kotlin > Android' 카테고리의 다른 글
[Android] RecyclerView 개념 및 사용방법 - Kotlin (2) | 2022.06.23 |
---|---|
[Android] Fragment 개념 및 간단 사용방법 Kotlin (0) | 2022.06.19 |