Kotlin object express 匿名内部类

Android 中建立一个handler 内部类处理多线程

    var handler = object: Handler() {

        override fun handleMessage(msg: Message) {
            super.handleMessage(msg)
            toast("2s后执行匿名内部类的toast")
        }
    }




该事件由点击loginTv触发,setOnClickListner()用完整的内部类的形式表达如下
loginTv.setOnClickListener (object : OnClickListener{

            override fun onClick(v: View) {
                var runable = Runnable{
                    Thread.sleep(2000)
                    handler.sendEmptyMessage(0)
                }<pre name="code" class="html">

上述代码可以用lambda简化为下属代码
loginTv.setOnClickListener ({loginTv -> toast("使用lambda")})
        loginTv.setOnClickListener ({toast("如果左侧的loginTv没有被使用,那么箭头左侧的参数也可以省略掉")})
        loginTv.setOnClickListener (){toast("lambda作为最后一个参数 则可以放在()外部")  }
        loginTv.setOnClickListener { toast("如果只有一个参数的时候,我们可以把()也去掉") }

runable.run() } })
 然后,,,还可以按照下述规则继续简化 

loginTv.setOnClickListener ({loginTv -> toast("使用lambda")})
loginTv.setOnClickListener ({toast("如果左侧的loginTv没有被使用,那么箭头左侧的参数也可以省略掉")})
loginTv.setOnClickListener (){toast("lambda作为最后一个参数 则可以放在()外部")  }
loginTv.setOnClickListener { toast("如果只有一个参数的时候,我们可以把()也去掉") }

所以该代码最终可以简化为
<pre name="code" class="html">     loginTv.setOnClickListener {
            var runable = Runnable{
                Thread.sleep(2000)
                handler.sendEmptyMessage(0)
            }

            runable.run()

        }


 




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值