Sobes.tech
Junior — Middle

У којим случајевима и на којем месту могу се прогласити подкласе ако је класа означена као sealed?

sobes.tech АИ

Одговор од АИ

U Kotlinu, klasa označena kao sealed ograničava hijerarhiju nasleđivanja: sve podklase te klase moraju biti deklarisane u istoj datoteci kao i sama sealed klasa. Ovo omogućava kompilatoru da zna celokupni skup naslednika i da ga koristi, na primer, u izrazima when bez potrebe da piše granu else.

To jest, podklase sealed klase mogu biti deklarisane:

  • U istoj datoteci gde je deklarisana sealed klasa.
  • Unutar same sealed klase (ugneždene klase).

Primer:

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

Ili

sealed class Result

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

Ali sve ove podklase moraju biti u istoj datoteci sa sealed klasom. Ovo ograničenje pomaže u obezbeđivanju sigurnosti tipova i potpunosti provera.