等号运算符不能在原始和盒装variables之间应用

在Kotlin中,像这样将一些Long值与0比较是微不足道的。

if (firstUnread == 0) { return } 

但通常会发生此错误。 什么是比较这些值的最佳方法?

运算符“==”不能应用于“长”和“整数”

3 Solutions collect form web for “等号运算符不能在原始和盒装variables之间应用”

0是Kotlin的Int 。 尝试用0L代替它,它会工作。

在Kotlin中,数字没有隐含的扩展转换: https : //kotlinlang.org/docs/reference/basic-types.html

在你的代码中,你试图比较一个LongfirstUnread )和一个Int0 )。 相反,比较0L所以你是比较LongLong.

你可以在任何int数之后轻松地添加.toLong()方法。 只需将您的代码更改为:

 if (firstUnread == 0.toLong()) { return } 
  • Lint认为Kotlin MutableMap.forEach()是java.util.Map.forEach()
  • 用协变types替换带有lambda的SAM构造函数
  • 在JSON数据类中带有可选字段的types安全
  • 如何将字符串的某些字符与Kotlin中的HashMap 的值交换?
  • Kotlin:如何异步等待一个相同的方法列表?
  • 用Maven减少为Kotlin配置编译环境的时间
  • Java中的Kotlin内部类可公开显示
  • 测试包不读取主包中定义的Kotlin类
  • 如何获得Kotlin中两个列表中所有元素的总和?
  • Kotlin扩展未解决的参考
  • 执行任务':app:compileDebugKotlin'失败。 >内部编译器错误。 查看日志了解更多详情
  • Kotlin language will be the best programming language for Android.