[Kotlin] Data Class와 Enum Class 설명 & 예제
- Language/Kotlin
- 2021. 2. 15.
728x90
특별한 기능이나 형태의 클래스
Data Class
데이터를 다루는데 최적화된 class로 '5가지'기능을 내부적으로 자동으로 생성해준다
- 내용의 동일성을 판단하는
equals()
의 자동 구현 - 객체의 내용에서 고유한 코드를 생성하는
hashcode()
의 자동구현 - 포함된 속성을 보기쉽게 나타내는
toString()
의 자동구현 - 객체를 복사하여 똑같은 내용의 새 객채를 만드는
copy()
의 자동 구현- 아무 패러미터가 없으면 똑같은 내용으로 생성
val a = Data("A",7)
val b = a.copy()
- 패러미터가 있다면 해당 패러티머를 교체하여 생성
val a = Data("A",7)
val b = a.copy("B")
- b ->
Data("B",7)
로 생성
- b ->
- 아무 패러미터가 없으면 똑같은 내용으로 생성
- 속성을 순서대로 반환하는 componenetX()의 자동구현
- Data("A",7)에서 A와 component1() , 7와 component2()
- 배열이나 리스트에 Data 담겨있을때 지원하기 위한 함수
예제1
fun main() {
val a = General("보영", 212)
println(a == General("보영",212))
println(a.hashCode())
println(a)
println()
val b = Data("루다",306)
println(b == Data("루다",306))
println(b.hashCode())
println(b)
println(b.copy())
println(b.copy("아린"))
println(b.copy(id = 618))
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
예제2
fun main() {
val list = listOf(
Data("보영", 212),
Data("루다", 306),
Data("아린", 618)
)
//두개의 속성 순회
for((a,b) in list) {
println("${a}, ${b}")
}
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
Enum class
enumerated type의 준말 -> '열거형'
상태를 구분하기위한 객체들을 이름을 붙여 여러개 생성해두고 그중 하나를 선택하여 나타내기위한 클래스
- enum 클래스는 관용적으로 상수를 나타낼때 사용하는 대문자로 기입
- enum의 객체들은 고유한 속성을 가질 수 있다
- 일반 클래스처럼 함수도 추가 할 수 있다.
enum class Color(val number: Int) {
RED(1),
BLUE(2),
GREEN(3);
fun isRed() = this == Color.RED
}
예제
fun main() {
var state = State.SING
println(state)
state = State.SLEEP
println(state.isSleeping())
state = State.EAT
println(state.message)
}
enum class State(val message: String) {
SING("노래를 부릅니다"),
EAT("밥을 먹습니다"),
SLEEP("잠을 잡니다");
//잠을 자는지 여부를 boolean으로 리턴 하는 함수
// 비교대상은 자기자신 즉 State가 되므로 this
fun isSleeping() = this == State.SLEEP
}
Data 클래스와 Enum 클래스는 일반 클래스에서 제공되지 않는 특정한 용도의 기능들을 제공하고 있으므로 여러 상황에서 유요하게 사용가능
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 컬렉션 함수(1) 설명 & 예제 (0) | 2021.02.16 |
---|---|
[Kotlin] Set & Map 설명 & 예제 (0) | 2021.02.15 |
[Kotlin] 중첩 클래스와 내부 클래스 설명 & 예제 (0) | 2021.02.12 |
[Kotlin] 함수의 argument 다루기 & infix 함수 설명 & 예제 (0) | 2021.02.12 |
[Kotlin] null 값을 처리하는 방법, 동일여부 확인 설명 & 예제 (0) | 2021.02.11 |