Kotlin中写 调用接口参数,转lambda表达式的步骤

35 阅读1分钟

单个接口的情况

比如java中有存在方法


    public void delContact(long remoteId,ICommonStringCallback iCommonStringCallback){
        Log.i("tag","del contact");

    }

在kotlin中调用如下

ContactWrapper.getInstance().delContact(remoteId,object :ICommonStringCallback {});

实现接口

atl+enter实现接口

android studio 自动实现接口如下

ContactWrapper.getInstance().delContact(remoteId,object :ICommonStringCallback {
     override fun onResult(i: Int, str: String?) {
               TODO("Not yet implemented")
      }
});

android studio alt+enter 转换未lambda表达式

as转换未lambda表达式

转换后的代码如下

ContactWrapper.getInstance().delContact(remoteId ) { 
	i, str -> TODO("Not yet implemented") 
};

或如下

ContactWrapper.getInstance().delContact(
       remoteId
) { i, str ->
    if (i == 0) {
        Log.i(TAG, "${remoteId}deleted success")
    }else{
        Log.e(TAG,"${remoteId} is not  your contact")
    }
 }

函数存在多个接口的情况

java 中delContactMore函数多个接口参数

    public void delContactMore(long remoteId, ICommonStringCallback iCommonStringCallback, ICommonStringCallback iCommonStringCallback2){

        Log.i("tag","del contact more ");

    }

kotlin中写

ContactWrapper.getInstance().delContactMore(remoteId,object :ICommonStringCallback,object:ICommonStringCallback);

第2个参数时自动提示选项正确的参数类型

第2个参数时自动提示选项正确的参数类型

                        ContactWrapper.getInstance().delContactMore(remoteId,object :ICommonStringCallback(),
                            object : ICommonStringCallback {
                            
                            })

用as 的alt+enter自动补全

自动补全实现接口第二个接口参数

再补全实现接口第一个接口参数

得到的代码如下

ContactWrapper.getInstance().delContactMore(remoteId,object :ICommonStringCallback{
       override fun onResult(i: Int, str: String?) {
                TODO("Not yet implemented")
        }
 },
       object : ICommonStringCallback {
       override fun onResult(i: Int, str: String?) {
                TODO("Not yet implemented")
       }

        })

👀关注公众号:Android老皮!!!欢迎大家来找我探讨交流👀