美文网首页
Kotlin匿名内部类

Kotlin匿名内部类

作者: 奔五码农 | 来源:发表于2021-12-12 20:09 被阅读0次

    在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
    它的参数(如果有的话)在""->""前定义,参数类型可能是省略的。 函数体跟在""->""后面。lambda方式要求此接口只能有一个抽象方法需要实现,如有有两个要实现就要用object方式。

    mAdapter!!.setOnItemClickListener { viewholder, data, position ->
    }
    3.单个参数情况
    在只有一个参数的情况下,只需要一个括号,用it替代参数

    view.setOnClickListener {

    }

    相关文章

      网友评论

          本文标题:Kotlin匿名内部类

          本文链接:https://www.haomeiwen.com/subject/ozfdfrtx.html