【发布时间】:2019-01-23 19:29:11
【问题描述】:
使用sealed classes 时,编译器仅检查同一文件中的子类型。
密封类的一大卖点是使用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
}
【问题讨论】:
-
第一种情况——
is B涵盖了B的所有子类,不需要C。但是你可能在B之前有is C的情况,这将是有意义的 -
哦,我完全错过了 C 是 B 所以
is B涵盖了它。谢谢!
标签: kotlin sealed-class