kotlin匿名内部类

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

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

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

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

1.object方式

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

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

2.lambda

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

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

3.单个参数情况

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

view.setOnClickListener {
    
}

你可能感兴趣的:(kotlin匿名内部类)