Закрытые классы Kotlin - почему компилятор не проверяет все подтипы?
При использовании закрытых классов компилятор проверяет только подтипы в одном и том же файле.
Одним из главных преимуществ продаж закрытых классов являются исчерпывающие проверки при использовании when
выражение. Так почему же это не реализовано?
В 1 файле у меня есть:
class C : B()
В другом файле у меня есть:
sealed class A
open class B : A()
fun switch(input: A) =
when(input) {
is B -> Unit
// is C -> Unit - I expect a compiler error since this is a subtype and it's commented out
}
1 ответ
Как прокомментировал Евгений Петренко, is B
случай, который требуется компилятору, охватывает все подклассы B.