kotlin 高阶函数 代替 接口回调

1 Java的接口回调

在Java当中,使用接口回调的形式传递数据很常见,定义接口,声明接口,在A类中传入接口的实例对象,就可以接收传入的数据index.而在kotlin中,比较简单,传入一个函数即可

B

public class B {

	 void testClick(){
        if (iUpdateListener!=null){
            iUpdateListener.updateItem(9);
        }
    }

    IUpdateListener iUpdateListener;

    public void setiUpdateListener(IUpdateListener iUpdateListener) {
        this.iUpdateListener = iUpdateListener;
    }

    interface IUpdateListener{
        void updateItem(int index);
    }
}

A

public class A {

    void testMethod(){
        B b = new B();
        b.setiUpdateListener(new B.IUpdateListener() {
            @Override
            public void updateItem(int index) {
                //TODO 接收调用的地方
            }
        });

    }
}

2.kotlin 高阶函数

先说下高级函数的结构,kotlin 函数一等公民,可以由引用来代表一个函数。

 imageLoader: ((T, ImageView) -> Unit)
  • imageLoader 函数的引用对象

  • (T, ImageView) 当前函数的参数,T 是泛型

  • ->Unit 这部分就是函数的返回值

使用:

B

fun setDataList(
	dataList: List<T>,
	imageLoader: ((T, ImageView) -> Unit)  ) {
		调用高阶函数,传入参数即可,就会回调到A类的函数体
		this.imageLoader(dataList[position], mImageView)
}

A

  viewHolder.myGridView.setDataList(listItem.images) { bean, imageView ->
	Glide.with(mContext).load(bean.imgOrgUrl).into(imageView)
  }
  
 //bean 对应泛型对象
 //imageView 
Kotlin高阶函数可以用于实现回调。所谓高阶函数,就是可以接受一个或多个函数作为参数,或者返回一个函数的函数。通过使用高阶函数,我们可以简化回调的实现方式。 具体来说,我们可以将一个函数作为参数传递给另一个函数,然后在需要的时候调用传递进来的函数。这样可以让我们的代码更加简洁、灵活,并且减少了冗余的代码。 在使用Kotlin高阶函数实现回调时,可以使用Lambda表达式来定义匿名函数,从而更加简化代码。Lambda表达式可以通过大括号 {} 来定义,可以在其编写函数的实现逻辑。 另外,为了方便在Java调用Kotlin高阶函数Kotlin提供了一系列Function接口类,最多支持22个参数。这些接口类可以用于定义函数类型,以便在Java使用高阶函数时进行类型匹配。 总之,通过使用Kotlin高阶函数,我们可以简化回调的实现方式,使代码更加简洁、易读和灵活。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Kotlin 使用高阶函数实现回调](https://blog.csdn.net/u011494285/article/details/80546335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Kotlin使用高阶函数实现多方法回调](https://blog.csdn.net/Heijinbaitu/article/details/100742964)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值