我在开发一个“Kotlin的React”项目。
plugins {
kotlin("js") version "1.8.0"
}
我写了这门课
class Percentage(private val number: Number) : Number() {
override fun toByte() = number.toByte()
override fun toChar() = number.toChar()
override fun toDouble() = number.toDouble()
override fun toFloat() = number.toFloat()
override fun toInt() = number.toInt()
override fun toLong() = number.toLong()
override fun toShort() = number.toShort()
override fun toString() = "$number%"
}
但is
运算符似乎不荣誉继承:
if (value is Percentage) {
println(value is Number)
}
甚至IDEA也警告我“例如检查总是真的”,但控制台打印错误...
1条答案
按热度按时间6psbrbz91#
因此,我检查生成的JS代码,并看到以下内容:
这就解释了一切。由于Kotlin/JS语言的差异,
is
运算符的行为在像Number
这样的基元类型周围是不一致的。