override fun toByte(): Byte = 0
override fun toChar(): Char = 42.toChar()
override fun toDouble(): Double = 0.0
override fun toFloat(): Float = 0f
override fun toInt(): Int = 64
override fun toLong(): Long = 0
override fun toShort(): Short = 0
}
fun main() {
val code = A()
val c = code.toChar()
println(c)
}
что выдаст этот код, если после val code добавить : Number?
1) * (42)
2) @ (64)
3) NoSuchMethodException
4) (0)
Там какая-то фигня была конкретно с Number, я года два назад писал issue. Но сейчас уже не помню
4 по идее ?
в общем, если не указывать тип, то оно вызовет toChar и получит 42, как и надо. а если указать тип, то оно не будет знать, есть ли там toChar и вставит intValue (который забриджован к toInt), а потом I2C
Это ещё норм, они всё равно должны возвращать одинаковые значения. Вот исходный баг с NoSuchMethod - это бомба.
это не такая уж бомба, потому что Integer никто не использует
Компилятор вставил вызов метода, которого нет, ну wtf
wtf, на который тяжело наткнуться. а вот у длинной арифметики таки есть юзкейсов
Обсуждают сегодня