【问题标题】:Type mismatch: inferred type is Int but Byte was expected类型不匹配:推断类型为 Int 但应为 Byte
【发布时间】:2018-08-10 16:04:56
【问题描述】:

我目前正在试用 kotlin,这里有一个简单的例子:

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

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

为什么会这样?

【问题讨论】:

    标签: casting kotlin


    【解决方案1】:

    带有+= 运算符的这一行相当于这个更长的调用 - 如果您在运算符上调用它,您实际上可以在 IntelliJ 中使用意图操作在两者之间进行转换:

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

    这里的问题是,您在 Byte 上调用的 plus 运算符正在返回 Int(我假设是因为无法保证结果会适合 Byte),这可以t 被隐式转换回Byte 以放回数组中。

    您可以通过使用更长的语法来解决此问题,并且将结果额外转换回Byte

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-15
      • 2020-04-24
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      相关资源
      最近更新 更多