美文网首页
kotlin中的延迟加载

kotlin中的延迟加载

作者: most_xiaoya | 来源:发表于2019-02-11 19:39 被阅读0次

kotlin的延迟加载主要有两种:lateinit和lazy;
一、lateinit
在var之前添加lateinit,然后选择你想要的时候,初始化,但是有以下需要注意的地方:
1.lateinit只能修饰变量var,不能修饰常量val;
2.lateinit不能对可空类型使用;
3.lateinit不能对java基本类型使用,例如:Double、Int、Long等。
在调用lateinit修饰的变量时,如果变量还没有初始化,则会抛出未初始化异常,报错
举个栗子🌰:

   lateinit var lateStr: String

    fun demo() {
        //初始化;
        lateStr = "hello ! i am  lateinit String "
    }

二、lazy的使用;
举个栗子🌰先:

val lazyStr :String by lazy {
        Log.e("Xiaoya","开始初始化")
        "hello ! i am  lazy String"
    }

使用时,在类型后面加by lazy{}即可,{}中的最后一行代码,需要返回初始化的结果,上述代码中,"hello ! i am lazy String"即为最后初始化的值。下面是lazy的一些注意点:
1、lazy只能对常量val使用,不能修饰变量var
2、lazy的加载时机为第一次调用常量的时候,且只会加载一次(毕竟是个常量,只能赋值一次)

三、区别:
上面简单了解了两种延迟加载的用法 那有什么区别呢?
首先两者的应用场景是略有不同的。
  然后,虽然两者都可以推迟属性初始化的时间,但是lateinit var只是让编译期忽略对属性未初始化的检查,后续在哪里以及何时初始化还需要开发者自己决定。
  而by lazy真正做到了声明的同时也指定了延迟初始化时的行为,在属性被第一次被使用的时候能自动初始化。但这些功能是要为此付出一丢丢代价的。

相关文章

  • Kotlin中 lateinit和by lazy区别:

    一、前言: 在使用kotlin开发中,因为各种原因,我们会经常需要使用到延迟加载的功能,目前kotlin的延迟加载...

  • kotlin学习笔记:延迟加载的简单介绍:lateinit和la

    在使用kotlin开发中,因为各种原因,我们会经常需要使用到延迟加载的功能,目前kotlin的延迟加载主要有两种:...

  • kotlin中的延迟加载

    kotlin的延迟加载主要有两种:lateinit和lazy;一、lateinit在var之前添加lateinit...

  • kotlin_lateinit(延迟加载)

    1. lateinit 延迟加载 2.lateinit 只能修饰, 非kotlin基本类型 因为Kotlin会使用...

  • 深入理解js

    延迟加载 (Lazyload) 三种实现方式 延迟加载也称为惰性加载,即在长网页中延迟加载图像。用户滚动到它们之前...

  • js 实现图片懒加载

    一、懒加载 懒加载也叫延迟加载,Js中图片的延迟加载,延迟图片需要符合某些条件时才加载;对于图片过多的页面,为了加...

  • kotlin精讲-第4章(4)kotlin 5大内置委托

    Kotlin标准库中,已经自定义了一系列标准委托,包括了大部分有用的委托。 延迟加载(Lazy) 定义 lazy(...

  • 延迟加载

    resultMap中的association、collection支持延迟加载的功能 延迟加载:先从单表查询,需要...

  • Kotlin学习笔记-延迟加载

    lazy:延迟加载 延迟初始化属性与变量 为处理这种情况,你可以用 lateinit 修饰符标记该属性: 该修饰符...

  • Swift懒加载

    懒加载的2个好处:延迟加载属性(UI类型控件一般都会延迟加载)在后边的代码中,延迟加载的属性,不用再强制解包 懒加...

网友评论

      本文标题:kotlin中的延迟加载

      本文链接:https://www.haomeiwen.com/subject/ydqceqtx.html