美文网首页
Kotlin的by lazy与lateinit区别

Kotlin的by lazy与lateinit区别

作者: 爱学习的蹭蹭 | 来源:发表于2019-12-03 07:13 被阅读0次

    1、by lazy

    1.1、by lazy 惰性加载->用到的时候在加载的意思
    1.2 by lazy 知道具体值,用到的时候再加载
    1.3 by lazy 必须是val修饰,lateinit必须var修饰

    2、lateinit 延迟加载

    2.1、by lazy 和lateinit 都可以单独使用或者放在成员变量中使用
    2.2、lateinit 不知道具体值,后面赋值再使用

    package com.kotlin.flong.base
    
    
    fun main(args :Array<String>){
        //println(name1)
        //println(name1)
        
        val p = Person1()
        p.setUserName("梁寅务")
        println(p.useName)
    
    }
    
    //by lazy 值必须是val,表示不可变的值 ,可以放在成员变量中,可以单独存在,返就是最后一行
    //并且by lazy是线程安全的(同步)
    val name1 :String by lazy {
        println(" init by lazy") //验证是否调用多次
        "liangjl"
    }   
     
    class Person1(){
        
        //这种使用表示使用Person1这个类的时候就已经加载了name
        //val name = "张三"
        //使用的时候再加载
        val name by lazy { "张三" }
        
        //lateinit表示不确定,后面可能用到的时候才会赋值,不知道具体是什么值
        lateinit var useName :String
        
        fun setUserName (useName :String){
            this.useName =useName
        }
        
    }
    

    相关文章

      网友评论

          本文标题:Kotlin的by lazy与lateinit区别

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