我有下面的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()
}
}
}
缺少的部分是var i:Animal=dog
基本上,编译器是在抱怨类型-cat
不是dog
的子类型(但它们都是animal
的子类型,这就是为什么如果您显式地设置了基类型,代码将会编译和工作
下面的代码在无法通过条件颜色时编译。深色和彩色。浅色,因为这两个类是抽象的。 我错过什么了吗?
我一直试图编译这个简单的警报对话框,以便在用户单击提交按钮时显示。编译代码时会弹出一条错误消息: 错误:(33,74)错误:不兼容的类型: 这个类叫做Login_Activity,它扩展了BaseActivity,它扩展了Activity。
我的函数类似于以下简化代码示例: 当我运行Mypy(版本0.52)我得到这个错误: 错误指向代码示例中的倒数第二行。为什么mypy返回此错误?我的代码是无效的(以任何方式)还是一些mypy错误?
我定义jackoson序列化器并将其添加到java类中,如下所示: 编译器出现以下错误: 注释的定义为: 如果我从ReportFilterDeserializer中删除泛型attibute,它将通过编译。我不明白编辑为什么抱怨。
我按照这个教程:https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer 现在我在这一点上: 我的问题是这条线... 显示一个错误:不兼容的类型。需要android。应用程序。FragmentManager发现:android。支持v4.app。碎片管理器。 我看到了一些帖子,但它们不适合我。 我用AppC
主要内容:数据类,密封类数据类 Kotlin 可以创建一个只包含数据的类,关键字为 data: 编译器会自动的从主构造函数中根据所有声明的属性提取以下函数: / 格式如 对应于属性,按声明顺序排列 函数 如果这些函数在类中已经被明确定义了,或者从超类中继承而来,就不再会生成。 为了保证生成代码的一致性以及有意义,数据类需要满足以下条件: 主构造函数至少包含一个参数。 所有的主构造函数的参数必须标识为 或者 ; 数据类不可