kotlin: by lazy的应用

一,说明:

by lazy 是一种懒加载模式,也就是说变量的值并不是在声明的时候赋值的,
而是在真正用到这个变量的时候,才会加载它,也就是为它赋值。
并且第一次赋值后会记录好这个值,以后的访问,都会直接返回这个值。
by lazy 模式只会执行一次赋值操作,也就是首次用到变量的时候,
变量一旦被赋值后,就不可以改变其值了。

 

1、特性

  • 修饰只读变量:仅用于 val 声明。
  • 自动初始化:首次访问时执行 Lambda 表达式并缓存结果。
  • 支持所有类型:包括基本数据类型(如 IntBoolean)。
  • 线程安全:默认使用 LazyThreadSafetyMode.SYNCHRONIZED(安全但略慢),可自定义模式。
  • 无异常风险:首次访问时必然初始化。

2、适用场景

  • 高开销初始化:如数据库连接、文件读取。
  • 单例模式:确保全局唯一实例。
  • 条件性初始化:仅在需要时才创建对象。

和lateinit的区别

二,代码:

1,类:

package com.example.okdemo1.model

class Demo5 {
    //用到name时才会执行代码初始化
    private val name: String by lazy { "王富贵" }
    private val job = "村长"

    //方法:打印信息
    fun printInfo() {
        println("职业:"+job)
        println("姓名:"+name)
    }
}

2,调用

        //点击
        binding.btnIncrement.setOnClickListener {
            val demoObj = Demo5()
            demoObj.printInfo()
        }

三,测试效果:

posted @ 2025-06-22 12:50  刘宏缔的架构森林  阅读(86)  评论(0)    收藏  举报