当前位置: 首页 > news >正文

Kotlin函数式接口

函数式接口

接口只有一个抽象方法的接口,称为 函数式接口 functional interface,也叫做 Single Abstract Method(SAM) interface

注:函数式接口,只有一个抽象方法,但可以有多个非抽象方法。

一、Kotlin

Kotlin支持 lambda 表达式,对应的接口声明 fun interface

fun interface IPredicate {fun accept(i: Int): Boolean
}

函数式接口,可以 lambda 方式创建:

val p = IPredicate {}

非 函数式接口,则只能 普通 对象创建方式:

val = object : IPredicate {}

二、Kotlin对 Java SAM 转换支持

Kotlin 对于Java的支持意味着:

只有一个非默认方法(non-default method) 的 Java 接口,只要 方法参数 和 Kotlin函数参数匹配,都可以在 Kotlin 中使用。

比如 Runnable 的使用:

val r = Runnable {}

补充说明:

Java 8 引入了 默认方法(default method),接口方法 支持 default 默认实现。相对 默认方法,没有默认实现就是 非默认方法(non-default method)。

三、Java的函数式接口

Java通过 @FunctionalInterface 注解,声明 函数式接口。

@FunctionalInterface
public interface Runnable {public abstract void run();
}

注:Kotlin 支持 Java SAM 转换,是根据 方法参数匹配,而非 Java的注解支持。

文档

  • Functional (SAM) interfaces
  • 函数式(SAM)接口 kotlincn
  • SAM conversions
http://www.lryc.cn/news/276929.html

相关文章:

  • 2024年1月9日学习总结
  • Nacos使用MySQL8时区问题导致启动失败
  • 在k8s集群中部署多nginx-ingress
  • SLF4J Spring Boot日志框架
  • mysql之导入导出远程备份
  • Java虚拟机ART 读书笔记 第2章 深入理解Class文件格式
  • 编程基础 - 初识Linux
  • c yuv422转yuv420p
  • 计算机网络 - 路由器查表过程模拟 C++(2024)
  • 实现pytorch版的mobileNetV1
  • vue多tab页面全部关闭后自动退出登录
  • 记一个集群环境部署不完整导致的BUG
  • Go zero copy,复制文件
  • http协议九种请求方法介绍及常见状态码
  • 详解flink exactly-once和两阶段提交
  • Qt/QML编程学习之心得:QDbus实现service接口调用(28)
  • 前端nginx配置指南
  • 接口测试到底怎么做,5分钟时间看完这篇文章彻底搞清楚
  • 显示管理磁盘分区 fdisk
  • Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用
  • L1-011 A-B(Java)
  • 系列七、Ribbon
  • 山东名岳轩印刷包装携专业包装袋盛装亮相2024济南生物发酵展
  • BGP公认必遵属性——Next-hop(一)
  • 增强Wi-Fi信号的10种方法,值得去尝试
  • 第十五章 ECMAScript6新增的常用语法
  • vulhub中的Apache SSI 远程命令执行漏洞
  • MSB20M-ASEMI迷你贴片整流桥MSB20M
  • 工程管理系统功能设计与实践:实现高效、透明的工程管理
  • 【C#】网址不进行UrlEncode编码会存在一些问题