51.lateinit 延迟加载
2019-10-04 本文已影响0人
写代码的向日葵
1.代码如下
/**
* lateinit:延迟加载 用的时候再赋值 不赋值不能用
*/
fun main(args: Array<String>) {
val p = Person()
p.setName("初始化了")
println(p.p_name)
}
class Person {
//不确定 后面可能用的时候才会赋值 不知道具体是什么值
lateinit var p_name: String
private set
fun setName(name: String) {
this.p_name = name
}
}
- by lazy和lateinit 都可以单独使用或者放到成员变量中使用
- by lazy知道具体值 用的时候再加载
- lateinit 不知道具体指,后面再赋值
- by lazy变量必须通过val修饰 lateinit必须通过var修饰