【问题标题】:Kotlin 1.5.2 data class hashcode( ) generated implementation will result in nullPointerExeptionKotlin 1.5.2 数据类 hashcode() 生成的实现会导致 nullPointerExeption
【发布时间】:2021-10-20 23:11:36
【问题描述】:

首先,当 Gson 将 json 字符串转换为 Kt 数据类时,Gson 可能会使用 'UnSafe' 创建数据类,并为 NoNull 字段分配 'null'。并且当这个对象的 hashcode() 被调用时,会抛出一个 nullPointerException。

因为kt编译器生成的字节码并没有检查每个字段,有人遇到过这个问题吗?

下面是1.5.20 kt-compiler生成的hashcode。

 public int hashCode() {
    result = this.eventId.hashCode();
    return result * 31 + this.voteId.hashCode();
  }

【问题讨论】:

标签: android kotlin hashcode


【解决方案1】:

这是一件奇怪的事情!要了解生成的hashCode()方法,请看伪代码解释:https://discuss.kotlinlang.org/t/how-does-kotlin-implement-equals-and-hashcode/940/2

您遇到的问题是,当 Gson 使用 null 字段创建和对象时,您已经向编译器保证它不会 为 null,因此它不会尝试捕获它hashCode() 中的情况。

【讨论】:

    猜你喜欢
    • 2021-12-01
    • 2020-02-21
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2011-07-23
    • 2016-06-08
    • 1970-01-01
    • 2014-09-14
    相关资源
    最近更新 更多