Sobes.tech
Junior — Middle

Kotlin-ში sealed class-ის რა უპირატესობები და გამოყენების სცენარები გაქვთ?

sobes.tech AI

პასუხი AI-სგან

Kotlin-ში sealed კლასი გამოიყენება მემკვიდრეობის ჰიერქიაზე შეზღუდვისთვის. ყველა შვილკლასი უნდა იყოს გამოქვეყნებული იმავე ფაილში, სადაც თავად sealed კლასი. ეს საშუალებას აძლევს კომპილატორს იცოდეს ყველა შესაძლო მემკვიდრის ვარიანტი, რაც სასარგებლოა when გამოთქმებში, სადაც არ არის საჭირო else განშტოება.

უპირატესობები:

  • ტიპის უსაფრთხოება: კომპილატორი ამოწმებს ყველა ვარიანტის სრული დამუშავებას.
  • მოსახერხებელია შეზღუდული მდგომარეობის ან მოვლენის ნაკრების მოდელირებისთვის.

გამოყენების სცენარები:

  • მდგომარეობის განხორციელება "მდგომარეობის" ნიმუშში.
  • მოვლენის ან ბრძანების დამუშავება.
  • შეზღუდული ვარიანტების წარმოდგენა, მაგალითად API პასუხები.

მაგალითი:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
    object Loading : Result()
}

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("მონაცემები: ${result.data}")
        is Result.Error -> println("შეცდომა: ${result.error.message}")
        Result.Loading -> println("იტვირთება...")
    }
}