0

タイトルの質問に対する答えは「いいえ」だと確信しています。しかし、単純なコードを書いたのですが、コンパイルしようとすると奇妙なエラーが発生します。コード:

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?) が動く!!

コンパイラに次のエラーを表示させます。

Hippo?.hunger は可変プロパティであり、この時点で変更されている可能性があるため、Int へのスマート キャストは不可能です。

しかし、次の行を削除すると、コードはコンパイルされます:

カバ?.空腹 = 5

誰かが私に説明できますか、コードが正常にコンパイルされないようにするこのコード行の何が問題なのですか?

ここに画像の説明を入力

4

1 に答える 1