kotlin by lazy 的使用

by lazy 的作用

by 是在kotlin中代表者委托, lazy 懒加载

by lazy 就是委托延时处理

下面写一个demo说明下

新建一个类

复制代码
class ExportController {

    fun getName(): String? {
        return "name";
    }

    fun getAge(): Int {
        return 18;
    }

}

在mian中如下

复制代码
class MainActivity : ComponentActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.main_layout)

        val exportController by lazy { ExportController() }
        exportController.getName();
        exportController.getAge();

    }

}

在这种demo中 通过 by lazy 懒加载的ExportController,当exportController第一次被访问时,会调用ExportController。

总结:只有在首次访问exportController属性时,才会调用ExportController来创建这个实例。之后的访问都将直接返回已经创建好的ExportController实例,避免了不必要的重复初始化。

相关推荐
稚南城才子,乌衣巷风流3 小时前
函数:编程中的核心概念
开发语言·前端·javascript
阿米亚波3 小时前
【C++】流式数据输入处理(不完全整理)
开发语言·c++·笔记
大模型码小白4 小时前
JAVA 集合框架进阶:List 与 Set 的深度解析与实战
java·开发语言·人工智能·windows·语言模型·list·ai编程
皓月斯语4 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
初願致夕霞5 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
Xzaveir5 小时前
不要用一个状态表示“号码已认证”:企业号码身份的四域模型
android·人工智能
脱胎换骨-军哥5 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
(Charon)5 小时前
【C++】手写 MySQL 连接池(二):同步连接的获取、加锁与释放
android
脱胎换骨-军哥6 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++
lbb 小魔仙6 小时前
VS Code Python 高级调试技巧:从入门到精通
开发语言·python