美文网首页kotlin
71.高阶函数代替接口回调

71.高阶函数代替接口回调

作者: 写代码的向日葵 | 来源:发表于2019-10-08 21:04 被阅读0次

1.java代码如下:

public class ButtonClick implements CallBack {
    public static void main(String[] args) {
        ButtonClick mother = new ButtonClick();
        mother.init();
    }

    @Override
    public void call() {
        System.out.println("按钮被点击了");
    }

    private void init() {
        Button button = new Button();
        button.setmCallBack(this);
        button.click();
    }
}

interface CallBack {
    void call();
}

class Button {
    private CallBack mCallBack;

    void click() {
        if (mCallBack != null) {
            mCallBack.call();
        }
    }

    public void setmCallBack(CallBack callBack) {
        mCallBack = callBack;
    }
}
  • 可以看到写起来非常繁琐,用kotlin的高阶函数,则可以简化称如下:

2.kotlin高阶函数代替函数回调

fun main(args: Array<String>) {
    val button = Button()
    button.action = {
        println(it)
    }
    button.click()
}

internal class Button {
    var action: ((String) -> Unit)? = null

    fun click() {
        action?.invoke("按钮被点击了")
    }
}
  • 设置一个变量接收类型为函数类型,因为kotlin中函数可以独立存在
  • 回调过程的时候可以使用action("按钮被点击了"),但是这种情况下,不能处理action为空的情况,所以推荐使用invoke方法

相关文章

  • 71.高阶函数代替接口回调

    1.java代码如下: 可以看到写起来非常繁琐,用kotlin的高阶函数,则可以简化称如下: 2.kotlin高阶...

  • Kotlin中使用高阶函数代替接口回调

    Kotlin中使用高阶函数代替接口回调 Java思路实现 1.创建接口,创建对应抽象方法2.声明接口成员变量3.创...

  • kotlin 高阶函数实现接口回调

    类A有一个参数name,现在把name 通过接口回调的方式传出去,设置一个延迟加载的方法参数,再类B中实例化方法,...

  • 高阶函数

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

  • 高阶函数

    问:什么是高阶函数?答:1、一个函数的参数是函数,就是高阶函数(回调函数是高阶函数)2、一个函数返回一个函数,当前...

  • 高阶函数

    高阶函数 函数作为参数 函数作为返回值的时候 作为参数 回调函数 回调函数就是一个参数,将这个函数作为参数传到另一...

  • Java回调

    回调示例代码 被调用方 Reponse::handle 回调接口(函数式接口) 请求方 打印结果

  • Android MVP 架构最佳实践

    内容导读 本文使用 RxJava 的异步返回代替传统的接口回调,并结合 Java 8 函数引用的新特性,从而使整个...

  • 回调模式

    概念 回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数 角色 回调抽象接口 回调者 利弊 利 ...

  • java回调函数

    利用接口来实现回调,即在调用回调函数的类中实现接口,并实现接口中的方法即回调的方法,被调用类中存在接口的熟悉,并将...

网友评论

    本文标题:71.高阶函数代替接口回调

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