美文网首页
使用JAVA函数式接口

使用JAVA函数式接口

作者: Ryan_Hoo | 来源:发表于2018-07-21 22:16 被阅读0次

    在Kotlin中可以传递一个Lambda代替OnClickListener实例:

    button.setOnClickListener { view ->  ... }

    这种方式可以工作的原因是OnClickListener接口只有一个抽象方法。这种接口被称为函数式接口或者SAM接口,SAM代表单抽象方法。

    1.1、把lambda当做参数传递给Java方法

    1.2、SAM构造方法:显示地把lambda转换成函数式接口

    SAM构造方法 是编译器生成的函数,让你执行从labmbda函数式接口实例显示转换。可以在编译器不会自动应用转换的上下文中使用它。

    使用SAM构造方法返回值

    fun   createAllDoneRunnable():Runnable{

            return  Runnable { println("All  done !") }

    }

    createAllDoneRunnable().run()

    SAM构造方法的名称和底层函数式接口的名称一样。SAM构造方法只接收一个参数——一个呗用作函数式接口单抽象方法体的lambda——并返回实现了这个接口的累的一个实例。

    SAM构造方法把lambda生成的函数是接口实例存储在一个变量

    val listener=OnClickListenner{ view->

            val  text =when(view.id){

                   R.id.button1->"First  button"

                   R.id.button2->"Second Button"

                   else->"Unknow button"

             }

             toast(text)

    }

    button1.setOnClickListener(listener)

    button2.setOnClickListener(listener)

    ps:看完真的是一脸蒙蔽。

    相关文章

      网友评论

          本文标题:使用JAVA函数式接口

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