RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚

이상한 나라의 개발자

Kotlin

data object!

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의 큰 차이점은 없는것 같지만,

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

 

 

반응형

'Kotlin' 카테고리의 다른 글

[Coroutine] 코루틴 내부동작 분석해보기!  (0) 2023.03.27
[Kotlin 공식문서 읽어보기] 코틀린과 채널 기본기 다지기!  (0) 2023.02.07
[Flow] 연산자 내부코드를 열어보자!  (0) 2023.01.28
[Equality] == vs. ===  (0) 2023.01.28
[Kotlin] use  (0) 2022.05.14
    'Kotlin' 카테고리의 다른 글
    • [Coroutine] 코루틴 내부동작 분석해보기!
    • [Kotlin 공식문서 읽어보기] 코틀린과 채널 기본기 다지기!
    • [Flow] 연산자 내부코드를 열어보자!
    • [Equality] == vs. ===
    RIEN😚
    RIEN😚
    안드로이드 / 코틀린 독학으로 취업하자!

    티스토리툴바