我很确定标题中问题的答案是否定的。但是我写了一个简单的代码,并在尝试编译时遇到了一个奇怪的错误。代码:
open class Animal (val stttt:String, val str:String = "hjm") {
open var fff: String = ""
open var image = ""
open val food = ""
open val habitat = ""
var hunger: Int? = 10
}
class Hippo ( var strrr:Int = 7) : Animal("just") {
override var image = "hippo.jpg"
override var food = "grass"
override val habitat = "water"
}
fun main(args: Array<String>) {
val hippo: Hippo? = Hippo()
hippo?.hunger = 5
println(hippo?.hunger) // println(hippo?.hunger as Int?) works!!
}
代码的最后一行:
println(hippo?.hunger) // println(hippo?.hunger as Int?) 有效!!
使编译器显示以下错误:
智能转换为 Int 是不可能的,因为 hippo?.hunger 是一个可变属性,此时本可以更改
但是,如果我删除以下行代码将被编译:
河马?饥饿= 5
有人可以解释一下,这行代码有什么问题导致代码无法成功编译?