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

java函数式接口与方法引用

函数式接口指的是,一个interface, 只含有一个抽象方法。函数式接口可以加上@FunctionalInterface注解,加上这个注解后编译器会检查接口是否满足函数式接口的规范,不满足规范则直接编译不过。 

典型的内置函数式接口有Runnable‌、Consumer、Supplier、Function、Predicate。 也可以自定义函数式接口。函数式接口可以和方法引用配合起来使用。 使用方法引用,需要该方法的参数、返回值能和接口的抽象方法的参数、返回值对应起来。

这里拿Runnable‌接口为例写几个测试代码看怎么用的。代码如下:

// class MyClass中的代码static void test2() {// Runnable只含有一个抽象方法run,run方法没有参数,没有返回值。Runnable runnable = () -> { // lambda表达式System.out.println("haha");};runnable.run();runnable = MyClass::sayHeiHei; // 静态方法引用。sayHeiHei方法和Runnable接口的run方法的方法签名一样,所以可以这样赋值。runnable.run();runnable = new MyClass()::sayHeHe; // 对象的实例方法引用runnable.run();
}static void sayHeiHei() {System.out.println("嘿嘿");
}void sayHeHe() {System.out.println("呵呵");
}

打印如下:

ok

再写一段测试方法:

// // class MyClass中的代码public static void main(String[] args) {invokeCallBack(new MyClass()::getName);
}String getName() {return "灭绝师太";
}static void invokeCallBack(Callable<String> call)  {try{System.out.println(call.call());} catch (Exception e) {}
}

打印:

ok 这里有点像回调函数的用法,而且写法很简约。

当接口不满足函数式接口规范,比如拥有超过一个抽象方法,这样用会编译报错:

http://www.dtcms.com/a/158347.html

相关文章:

  • 八猴渲染器三维场景实时预览软件 Marmoset Toolbag 5.01 安装包免费下载
  • 山东大学离散数学第九章习题解析
  • C++ 为什么建议类模板定义在头文件中,而不定义在源文件中
  • Nacos详解
  • Python 第 12、13 节课 - 元组和列表
  • Linux基本指令(保姆级教学)
  • 【新技术】Testfy.js v3.0 深度解析与使用指南
  • 关于循环缓冲区
  • MUC基本知识
  • 基于javaweb的SpringBoot小说阅读系统设计与实现(源码+文档+部署讲解)
  • Threejs中顶视图截图
  • Python dotenv 使用指南:轻松管理项目环境变量
  • Bento4的安装和简单转码
  • Linux基础指令【上】
  • 写时拷贝讲解
  • dubbo 隐式传递
  • Python项目实践:控制台银行系统与词频统计工具开发指南
  • 【project】--模拟搭建一个中小型校园网的网络平台
  • SpringBoot 常用注解通俗解释
  • 何恺明团队又发新作!!-用于物理推理的去噪哈密顿网络
  • Linux基础命令总结
  • Set的学习
  • 论文如何降低AIGC?(完整指南版)
  • 【Linux系统篇】:信号的生命周期---从触发到保存与捕捉的底层逻辑
  • 长途骑行装备攻略:VELO维乐 Angel Revo坐垫伴我畅享旅途
  • arcpy列表函数的应用
  • ClickHouse查询执行与优化
  • Linux基础篇、第4章_03系统磁盘高级管理LVM 逻辑卷管理器
  • 腾讯二面:TCC分布式事务 | 图解TCC|用Go语言实现一个TCC
  • java中的Selector详解