Data class : 데이터를 보유하고 있는 간단한 클래스를 정의할 때 사용
Sealed class : 상태를 효율적으로 관리하고 특정 유형의 클래스 계층을 제한하여 안정성을 높이는 데 사용
Data classes(데이터 클래스)
- 주로 데이터를 보관하는 데 사용
- equals(), hashCode(), toString(), copy() 메서드를 자동으로 생성합니다.
- 상속 불가
data class Person(val name: String, val age: Int)
fun main() {
val person1 = Person("Alice", 30)
val person2 = Person("Alice", 30)
println(person1 == person2)
// 출력: true
println(person1.hashCode() == person2.hashCode())
// 출력: true
println(person1.toString())
// 출력: Person(name=Alice, age=30)
val person3 = person1.copy(age = 25)
println(person3)
// 출력: Person(name=Alice, age=25)
}
Sealed class (실드 클래스)
- 상속을 통해 계층 구조를 정의할 때 사용
- 하위 클래스를 제한하여 외부에서 새로운 하위 클래스를 추가하는 것을 방지
- when 표현식을 사용하여 sealed class의 모든 하위 클래스에 대한 처리
sealed class Result
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
fun handleResult(result: Result) {
when (result) {
is Success -> println("Success: ${result.data}")
is Error -> println("Error: ${result.message}")
}
}
fun main() {
val successResult = Success("Data received")
val errorResult = Error("Failed to retrieve data")
handleResult(successResult)
// 출력: Success: Data received
handleResult(errorResult)
// 출력: Error: Failed to retrieve data
}
참고문서
https://kotlinlang.org/docs/data-classes.html
Data classes | Kotlin
kotlinlang.org
https://kotlinlang.org/docs/sealed-classes.html
Sealed classes and interfaces | Kotlin
kotlinlang.org
'Kotlin' 카테고리의 다른 글
[Kotlin] Kotlin when 문에서 else를 써야 할 때와 생략할 때 (0) | 2024.12.12 |
---|---|
[Kotlin] 코루틴(coroutine)예외 처리와 취소 (0) | 2024.12.02 |
[Kotlin] StateFlow: Android 상태 관리를 위한 필수 도구 (1) | 2024.11.15 |
[Kotlin] 언더스코어(_)를 변수 이름에 붙이는 이유 (1) | 2024.09.03 |
[Kotlin] Coroutine Suspend function (0) | 2024.03.25 |
[Kotlin] Scope functions(let, run, with, apply, also) (0) | 2024.03.05 |
[Kotlin] object, companion object (0) | 2024.03.05 |