美文网首页
使用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:看完真的是一脸蒙蔽。

相关文章

  • 42 函数式接口

    函数式接口在Java中是有且只有一个抽象方法的接口,java中就是使用Lambda接口作为函数式接口 定义接口格式...

  • Java lambda表达式

    1. Java函数式接口 Java实现函数式编程的方式是函数式接口(functional interface),函...

  • 函数式接口

    为什么需要函数式接口? 在函数式编程思想下,允许把函数本身作为参数传入另一个函数。Java中使用函数式接口来实现“...

  • Java 8 Function函数式接口

    Java 8 Function函数式接口 介绍 函数式接口其实就是一个抽象接口类,在Java 8之前已有的函数式接...

  • Java8 新特性 四大内置核心函数式接口及其扩展

    四大内置核心函数式接口 Java内置的函数式接口是为了方便开发者使用Lambda表达式,对于应对大部分函数式接口的...

  • 3.JDK1.8特性之函数式接口

    1.什么是函数式接口 2.自定义函数式接口 3.Lambda表达式替代函数式接口做参数使用 4.Java内置四大核...

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • 02 Java-Lambda-Java 8 自带的函数接口

    Java 8 自带的函数接口 我们使用lambda在处理自己定义的业务时,需要自定义函数式接口,其实java8已经...

  • lambda表达式和函数型接口【java8 特性】

    (4)使用lambda表达式和函数式接口Predicate 使用 $\color{red}{java.util.f...

  • JAVA8函数式接口学习

    JAVA8函数式接口 函数式接口是java8的一种新特性,函数式接口定义了且只定义了一个抽象方法!该接口非常有用,...

网友评论

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

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