【发布时间】:2018-06-15 19:41:12
【问题描述】:
我有以下 Kotlin 代码。一个名为Animal 的密封类,以及两个对象类Dog 和Cat 继承自密封类Animal。我在 is Cat 案例的 when 子句中收到此错误。
Incompatible types: Cat and Dog
为什么会出现这个错误?如何在 Kotlin 中使用密封类进行这种类型的操作?密封类是做多态的好选择吗?
sealed class Animal {
abstract fun speak()
}
object Dog : Animal() {
override fun speak() { println("woof") }
}
object Cat : Animal() {
override fun speak() { println("meow") }
}
fun main(args: Array<String>) {
var i = Dog
i.speak()
when(i) {
is Dog -> {
print("Dog: ")
i.speak()
}
is Cat -> {
print("Cat: ")
i.speak()
}
}
}
【问题讨论】:
标签: kotlin sealed-class