Kotlin- 学会入坑

视图绑定新姿势:Kotlin-Android-Extensions

在model层级下的build.gradle文件头部加上:
    apply plugin: 'kotlin-android-extensions'

在需要调用的Activity里面:
import kotlinx.android.synthetic.main.<布局名>.* 即可导入布局中所有控件属性

接着通过控件的id 直接引用控件对象进行调用即可复制代码

优点:相比之前的findViewById(),和@注解的两种方式,简化了代码的书写。

疑虑:太过封装化的编程语言,会不会导致开发者对底层的原理了解会越来越少呢?


延迟初始化:lateinit var

只能用来修饰成员变量,不能用来修饰局部变量,并且只能用来修饰对象,不能用来修饰基本类型(因为基本类型的属性在类加载后的准备阶段都会被初始化为默认值)

在之前的文章中也了解了五大内置委托之 Lazy()
虽然两者都可以推迟属性初始化的时间,但是lateinit var只是让编译期忽略对属性未初始化的检查,后续在哪里以及何时初始化还需要开发者自己决定。而by lazy()真正做到了声明的同时也指定了延迟初始化时的行为,在属性被第一次被使用的时候能自动初始化。

一篇别人写的详细介绍延迟初始化的文章:juejin.im/post/5affc3…


Kotlin空指针处理机制 null safety

?或者 obj? = null ?: defaulValue

?:代表对象允许为空,该对象在被调用的时候,不再抛出NullPointException,而是输出null,

但是被?修饰的对象在if判断中,前面必须做手动的非空判断,或者也可以使用?:default 进行默认值的输出,避免编译检测异常。

在Kotlin里面,三元表达式不再是三个参数表达,而是简化成 obj? : defaultValue 两个参数表示即可


!!修饰符

表示当前对象不能为空,如果手动将对象置空,那么编译时一定会报异常

辣么一个对象没有被?修饰,它的后面其实默认跟了!!修饰符


object 与 compation object 的概念

的地方
发大V


转载于:https://juejin.im/post/5cff1eb5f265da1b8f1ab748

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值