第一行代码 (第三版) 第四,五章

延迟初始化和密封类:

lateinit 关键字(延迟初始化,使用这个有 空指针 风险),解决每个实例都要非空判断

        private lateinit var adapter : MsgAdpter

        使用:

        if(!:: adapter.isInitilized){

                adapter = MsgAdapter (msgList)

        }

sealed 关键字(密封类,自动检查该密封类有哪些子类,并强制要求你将每一个子类所对应的情况全部处理)通常可以结合RecyclerView 适配器中的ViewHolder一起使用

    interface class Result

        class Success(val msg: String) : Result()

        class Failure( val error : Exception) : Result()

使用:密封类及其子类:只能定义在同一文件的顶层位置,不能嵌套在其他类中

        sealed class Result

        class Success(val msg: String) : Result()

        class Failure( val error : Exception) : Result()

扩展函数和运算符重载:

扩展函数:在不修改某个类源码的情况下,仍然可以打开这个类,向该类添加新的函数

定义结构:(函数名前加 className)

        fun ClassName.methodName(param1, Int, params2: Int) : Int {

                return 0 

        }

(最好定义成 顶层方法,这样可以让扩展函数拥有全局的访问域)

定义成了String 类的扩展函数,就自动拥有了String 实例的上下文,

因此不需要再传入字符串参数了

 

                    

operator : 运算符重载  (允许对同一运算符多次重载)

        class Obj{

                operator fun plus(obj : Obj) : Obj {

                }

        }

指定对象

             

语法糖表达式 对应 实际调用函数

!a ------- a.not

a in b ----- b.contains(a)

基本对象:    扩展函数 + 运算符重载( operator + times(乘法) )

                    

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值