Kotlin

data object!

RIEN😚 2024. 11. 9. 20:07
728x90
반응형

 

얼마전 부터 sealed 내부에서 object를 사용하게 된다면

data object 사용을 권장하고 있는 점을 알게 되었습니다.

 

data object가 무엇인지 조사하고 학습한 내용을 정리한 글입니다. 😊

 

Object declarations and expressions | Kotlin

 

kotlinlang.org

 

1. data object에서 제공해주는 기능!

- toString() : data object의 이름을 반환합니다.

- equals() / hashCode() 를 이용해 동등성 검사를 할 수 있습니다.

단! custom equals() 또는 hashCode() 메서드를 구현할 수는 없습니다.

 

또한 equals() 메서드는 동일한 data object에서는 동일한 값을 반환하는 것이 보장됩니다.

fun main() {
	println(Test) // com.seomseom.test.MainActivity$Test@366f00
	println(Test1) // Test1
    println(Test2) // Test2
    println(Test1 == Test1) // true
}

object Test
data object Test1
data object Test2

 

2. data class와의 차이점

- data object는 singleton이기 때문에 copy 메서드를 지원해주지 않습니다.

- componentN() 메서드를 지원해주지 않기 때문에 구조분해 선언을 할 수 없습니다.

 

sealed interface ReadResult

data class Number(val number: Int): ReadResult
data class Text(val text: String): ReadResult
data object EndOfFile: ReadResult

fun main() {
	println(Number(7)) // Number(number = 7)
    println(EndOfFile) // EndOfFile
}

 

3. 결론

개인적으로 크게 object와 data object의 큰 차이점은 없는것 같지만,

디버깅이나 로그를 찍을 때 좀 더 간편하게 상태를 확인할 수 있는 장점이 있다고 생각합니다. 🤗

 

 

반응형