by lazy字段使用的时候,遇到空指针报错:
Attempt to invoke interface method 'java.lang.Object kotlin.Lazy.getValue()
结论:原因是,该实例是由Gson解析创建的,Gson创建对象,不一定会执行对象的构造方法,造成Lazy代理对象没有创建。
实体类
data class Person(val name: String, val age: Int) {
private val nameAndAge by lazy {
name + age
}
}
by lazy 实质是一个委托对象,它是由构造方法中进行创建的
Gson反射创建对象的过程,不一定会执行对象的构造方法,取决于最终设置的反射创建对象的方式