​by lazy 语法学习笔记

原来kotlin在初始化的时候有很多种用法,比如by lazy 的时候可以延迟初始化,就是在创建一个新对象的时候,还没有初始化的时候,这个时候可以用这个来延迟初始化一些对象。


比如有些值我们喜欢在对象创建之后在用对象里面的值来做事情,这个时候对象还没有初始化,你要用就会报错,那么kotlin就很好的解决了这个问题,可以延迟来初始化。


在java里面我们要做延迟初始化可能就需要自己去判断生命周期,然后在初始化后的生命周期来做这个处理,或者自己在使用之前判断一下,不为空在使用。


在使用by lazy的时候要注意一下几点


1、该变量必须是引用不可变的,而不能通过var来申明。

2、在被首次调用的时候,才会进行赋值操作。一旦被赋值,后续它将不能被更改。


这个背后逻辑是怎么实现的了?


lazy背后的逻辑就是接受了一个lambad并返回lazy<t>实例的函数,第一次访问该属性时,会执行lazy对应的lambada表达式并记录结果,后续访问该属性时只是返回记录的结果,并且这些操作是同步的,系统自动加上同步锁。所以线程是安全的。


其实与之对应的还有一个,lateinit来初始化,这个主要使用var声明的变量,也不能使用基本的数据类型上。


好了算是一个小的知识点吧,这里做个记录分享。


其实做技术跟做任务差不多,就是不断的学习,测试。做技术也是一样,看再多,不动手一切都是零。

本篇文章来源于微信公众号: 技术刚刚好

免责声明:本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有,本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
安全观察-网赚平台 » ​by lazy 语法学习笔记

发表评论

提供最优质的资源集合

立即查看 了解详情