Sobes.tech
Junior — Middle

Kann man den Operator when verwenden, um nicht alle Unterklassen einer sealed-Klasse zu behandeln?

sobes.tech KI

Antwort von AI

В Kotlin, если у вас есть sealed класс, оператор when при проверке всех его подклассов может использоваться без ветки else, так как компилятор знает все возможные варианты. Однако, если вы не обрабатываете все подклассы sealed класса в when, то компилятор потребует добавить ветку else для обработки пропущенных случаев.

То есть, можно использовать when для обработки не всех подклассов, но тогда обязательно нужна ветка else.

Пример:

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

fun handle(result: Result) {
    when (result) {
        is Result.Success -> println("Success: ${result.data}")
        else -> println("Что-то другое") // обязательно, если не все подклассы обработаны
    }
}

Если же обработать все подклассы, else не нужен.