kotlin匿名内部类

在java中创建匿名内部类,只需要把这个类直接new 出来,下面以一个interface给为例子,如下

public interface OnItemClickListener<T> {
    void onItemClick(ViewHolder viewHolder, T data, int position);
}

mAdapter.setOnItemClickListener(new OnItemClickListener<String>() {
    @Override
    public void onItemClick(ViewHolder viewHolder, String data, int position){
    }
});

在kotlin中用对象表达式替代java匿名内部类的语法

1.object方式

mAdapter!!.setOnItemClickListener(object : OnItemClickListener<String>{
    override fun onItemClick(viewHolder: ViewHolder?, data: String?, position: Int){
   }
})

看起来用object方法创建匿名内部类和java的方式差不多,下面用lambda再简化下代码

2.lambda

它的参数(如果有的话)在""->""前定义,参数类型可能是省略的。 函数体跟在""->""后面。

mAdapter!!.setOnItemClickListener { viewholder, data, position ->
}

3.单个参数情况

在只有一个参数的情况下,只需要一个括号,用it替代参数

view.setOnClickListener {
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。