Kotlin sealed 类 - 为什么编译器不检查所有子类型?
Kotlin sealed classes - why doesn't compiler check for all subtypes?
使用sealed classes时,编译器只检查同一文件中的子类型。
sealed 类 的一大卖点是使用 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
}
作为 Eugene Petrenko ,编译器要求的 is B
案例涵盖了 B 的所有子类。
使用sealed classes时,编译器只检查同一文件中的子类型。
sealed 类 的一大卖点是使用 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
}
作为 Eugene Petrenko is B
案例涵盖了 B 的所有子类。