美文网首页
Kotlin中写 调用接口参数,转lambda表达式的步骤

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

作者: 牵手生活 | 来源:发表于2024-03-13 16:04 被阅读0次

单个接口的情况

比如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") };

或如下

image.png
                        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);
image.png

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

第2个参数时自动提示选项正确的参数类型
                        ContactWrapper.getInstance().delContactMore(remoteId,object :ICommonStringCallback(),
                            object : ICommonStringCallback {
                            
                            })

用as 的alt+enter自动补全

自动补全实现接口第二个接口参数 再补全实现接口第一个接口参数 image.png

得到的代码如下

image.png
                        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")
                            }

                            })

相关文章

  • kotlin中lambda的实现和内联函数

    前言 通过阅读lambda表达式与Kotlin高阶函数,你应该了解到在kotlin中传递lambda作为函数参数的...

  • 方法引用 & 构造器引用

    一、方法引用   使用方法引用代替Lambda表达式,Lambda体中调用方法的参数列表与返回值类型,与函数式接口...

  • Kotlin之使用Java函数式接口

    把lambda当做参数传递给Java方法 可以把lambda传给任何期望函数式接口的方法 在Kotlin中,可以调...

  • Kotlin的内联函数探索

    在Kotlin中,lambda表达式会被正常的编译成匿名类。这表示每调用一次lambda表达式,一个额外的类就会被...

  • 高阶函数

    lambda表达式:只有一个参数可以省略不写,kotlin默认的参数名it 用高阶函数代替回调 常规写法: 在相应...

  • Lambda 之 JAVA & Kotlin 中二问题

    先附上整理学习的kotlin Lambda表达式范例 以上是Kotlin中的Lambda表达式使用方式,对比Jav...

  • 函数式编程

    1. lambda表达式 格式:(参数)->表达式(参数)->{语句;}示例 函数式接口 函数式接口:有仅只有一个...

  • Kotlin: inline noinline 详解

    noinline 在 Kotlin 中,函数可以作为参数传递给其他函数或 lambda 表达式中,这是函数式编程的...

  • java 8 新特性-lambda表达式

    lambda表达式 理解(行为参数化)lambda表达式是一个函数式接口的实现,可以将函数作为方法参数,或者将代码...

  • Lambda总结

    一个Lambda表达式是一个函数式接口的一个实例 为什么要有lambda表达式,lambda表达式当成参数传递,属...

网友评论

      本文标题:Kotlin中写 调用接口参数,转lambda表达式的步骤

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