Sobes.tech
Junior — Middle

În ce cazuri și în ce loc pot fi declarate subclase dacă clasa este marcată ca sealed?

sobes.tech AI

Răspuns de la AI

În Kotlin, o clasă marcată ca sealed limitează ierarhia de moștenire: toate subclasele acestei clase trebuie să fie declarate în același fișier cu clasa sealed. Acest lucru permite compilatorului să cunoască setul complet de moștenitori și să îl utilizeze, de exemplu, în expresiile when fără a fi nevoie să scrieți o ramură else.

Adică, subclasele clasei sealed pot fi declarate:

  • În același fișier în care este declarată clasa sealed.
  • În interiorul clasei sealed (clase imbricate).

Exemplu:

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

Sau

sealed class Result

class Success(val data: String) : Result()
class Error(val error: Throwable) : Result()

Dar toate aceste subclase trebuie să se afle în același fișier cu clasa sealed. Această restricție ajută la asigurarea siguranței tipurilor și completitudinii verificărilor.