Sobes.tech
Junior — Middle

Ποια πλεονεκτήματα και σενάρια χρήσης γνωρίζετε για την sealed class σε Kotlin;

sobes.tech AI

Απάντηση από AI

Η κλειστή κλάση (sealed class) στην Kotlin χρησιμοποιείται για τον περιορισμό της ιεραρχίας κληρονόμησης. Όλες οι υποκλάσεις της sealed class πρέπει να δηλώνονται στο ίδιο αρχείο με την sealed class. Αυτό επιτρέπει στον μεταγλωττιστή να γνωρίζει όλες τις πιθανές παραλλαγές των κληρονόμων, κάτι που είναι χρήσιμο για χρήση σε εκφράσεις 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("Φόρτωση...")
    }
}