自定义函数式接口

作者: jkwen | 来源:发表于2021-05-27 08:04 被阅读0次

在 Kotlin 的 lambda 编程中有说过对于单个抽象方法的接口可以用 lambda 进行简写,这种特殊的接口俗称函数式接口,在实际项目里用起来也是极为简便,最典型的就是 setOnClickListener 方法。

今天在写接口时想到,如果我写一个仅有一个抽象方法的接口,应该也能用 lambda 表示,就像下面这样,

interface OnDialogOpListener {
    fun onConfirm(view: View)
}

但在调用 set 方法时,我却只能用 object 匿名内部类的形式实现,IDE 并没有提示我可以用 lambda,我强行用的话还报错了。可见普通方式的声明定义不太行。后来我搜到了这篇文章 https://www.kotlincn.net/docs/reference/fun-interfaces.html ,介绍 kotlin 的函数式接口。不同点在于在 interface 的前面又增加了 fun 修饰,表明这是个函数式接口,这点和 OnClickListener 接口是不同的,后者本身用 Java 实现,所以并不能看出特殊,而用 fun 修饰接口,才是声明函数是接口规范的做法。

fun interface OnDialogOpListener {
    fun onConfirm(view: View)
}

像上面这样就是一个标准的函数式接口了,这下就能用 lambda 来表示了。不过要注意的是,当接口有多个抽象方法时,fun 修饰你想用也用不上,因为这只能限定在单抽象方法的接口上。

嗯,又学到了一点。

相关文章

  • 12.函数式接口

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

  • java8 stream 声明受检异常

    自定义函数式接口 伪代码示例

  • JDK8新特性 - 函数式编程

    一、JDK8之自定义函数式编程 1.使用Lambda表达式,自定义lambda接口编程 定义⼀个函数式接口 需要标...

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

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

  • java基础-day23-函数式接口和Stream流

    函数式接口和Stream 1. 函数式接口 1.1 函数式接口概述 1.2 常用函数式接口 1.3 比较器函数式接...

  • 2020-07-04【函数式接口】

    函数式接口概述 函数式接口作为方法的参数 函数式接口作为方法的返回值 常见的函数式接口 Supplier接口 Co...

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

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

  • 函数式接口

    函数式接口 一、函数式接口的定义   函数式接口:函数式接口中有且仅有一个抽象方法,这个抽象方法的意义在于表达某种...

  • 测验:函数式接口

    下面哪些接口是函数式接口? 答案:只有Adder是函数式接口。SmartAdder不是函数式接口,因为它定义了两个...

  • Java8中的常用函数式接口

    总结 自定义函数式接口比如(T, R, U) -> Boolean 新建一个接口文件然后下入以下代码即可。

网友评论

    本文标题:自定义函数式接口

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