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
sealedklasa. - Unutar same
sealedklase (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.