类型不匹配:推断的类型为Int,但应为Byte

时间:2018-08-10 16:04:57

标签: casting kotlin

我目前正在尝试Kotlin,这里有一个简单的示例:

var byteToAdd: Byte = 3
var byteArray = byteArrayOf(1, 2, 3, 4, 5)
byteArray[0] += byteToAdd
println(byteArray[0])

但是执行时,在第3行出现错误,因为它说byteToAddInteger,即使我将byteToAdd的类型设置为Byte在第1行。

为什么会这样?

1 个答案:

答案 0 :(得分:7)

带有+=运算符的这一行等效于此较长的调用-如果您在运算符上调用它,则实际上可以在IntelliJ中的两个有意动作之间进行转换:

byteArray[0] = byteArray[0].plus(byteToAdd)

这里的问题是您在Byte上调用的plus运算符返回了Int(我假设是因为不能保证结果会适合{{ 1}}),无法将其隐式转换回Byte并重新放入数组中。

您可以使用以下较长的语法来解决此问题,将结果再转换回Byte

Byte