接口作为参数时kotlin语言写法总结

这里以点击事件为例子


java中,setOnClickListener后面需要传入OnClickListener接口对应的对象

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        doSomething()
    }
});

直接通过机器转化为kotlin代码:
button.setOnClickListener(object : View.OnClickListener{
    override fun onClick(v: View?) {
        doSomething()
    }
})

这种写法明显体现不了kotlin语言简洁的优势,通过优化写法,我们在kotlin中写点击事件时只需要写为:

button.setOnClickListener{doSomething()}

那么,接口做为参数时的各种情况下应该如何写呢,这里我总结了下:

kotlin接口写法总结:
一个原则,三个优化:
原则:

接口作为参数时参数位置替换为此写法:{参数1,参数2 ... -> {需要运行的方法}}

优化:
1.当接口做参数位于最后一个参数时,可以提到小括号外面
2.如果是唯一参数,甚至可以省略小括号
3.当接口的回调方法参数只有一个时,参数和函数推导符可以省略,默认it为其参数

例子1:
dailog的取消按钮大家都很熟悉:
public Builder setNegativeButton(CharSequence text, final OnClickListener listener)

interface OnClickListener {
    void onClick(DialogInterface dialog, int which);
}

一个原则:
builder.setNegativeButton("取消", {dialog, which -> dialog.dismiss()})
第一点优化:
builder.setNegativeButton("取消"){dialog, which -> dialog.dismiss()}

例子2:
普通button的点击事件:
public void setOnClickListener(OnClickListener l)

public interface OnClickListener {
    void onClick(View v);
}

一个原则
button.setOnClickListener({v -> doSomething()})
第一点优化:
button.setOnClickListener(){v -> doSomething()}
第二点优化:
button.setOnClickListener{v -> doSomething()}
第三点优化(doSomething中可以直接使用it代替v):
button.setOnClickListener{doSomething()}


注意:
lambda表达式在java和kotlin中写法是不一样的
java中是下面的表达式,而kotlin中下面的写法是不行的
button.setOnClickListener(v -> {doSomething()})

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值