gpt4 book ai didi

kotlin - Kotlin 中的密封类,不兼容的类型错误

转载 作者:行者123 更新时间:2023-12-04 18:27:01 25 4
gpt4 key购买 nike

我有以下 Kotlin 代码。一个名为 Animal 的密封类, 和两个对象类 DogCat继承自密封类 Animal .我在 when 中收到此错误is Cat 案例中的子句。

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()
}
}
}

最佳答案

缺少的部分是var i: Animal = Dog
基本上编译器提示类型 - Cat不是 Dog 的子类型(但它们都是 Animal 的子类型,这就是为什么如果您显式设置基类型代码将编译和工作

关于kotlin - Kotlin 中的密封类,不兼容的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48122993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com