Ответ
Да, можно. В Kotlin при использовании when с sealed классами компилятор требует покрыть все возможные варианты, но есть несколько способов обойти это:
- Использование
else– если не все случаи обработаны, можно добавить веткуelse:
when (sealedInstance) {
is Subclass1 -> handleSubclass1()
else -> handleOthers()
}
- Локальные переменные – если
whenиспользуется как выражение (возвращает значение), но не все случаи нужны, можно сделать его statement (без возврата):
val result = when {
sealedInstance is Subclass1 -> "Case 1"
else -> "Default"
}
- Игнорирование через
_– в Kotlin 1.7+ можно использовать_для неиспользуемых веток:
when (sealedInstance) {
is Subclass1 -> action()
else -> {}
}