Avatar
暗黙の型変換をサブタイピングっぽく振る舞わせてるのが諸悪の根源ですね・・・。
5:52 AM
暗黙の型変換出ない本物のサブタイピングである Kotlin なら何の問題もありませんね。 // Kotlin open class Animal class Cat: Animal() // Rule A // Cat is subtype of Animal run { val cat: Cat = Cat() val animal: Animal = cat } // Rule B // Int is subtype of Int? run { val int: Int = 0 val intOptional: Int? = int // 0 } // Rule C // Optional has covariance run { val catOptional: Cat? = null val animalOptional: Animal? = catOptional // null } // Question // What happen replace `Cat : Animal` to `Int : Int?` run { val intOptional: Int? = null val intOptionalOptional: Int?? = intOptional // null (Int?? == Int?) }