当前位置: 首页 > 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 这里有点像回调函数的用法,而且写法很简约。

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

相关文章:

  • 八猴渲染器三维场景实时预览软件 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 常用注解通俗解释
  • 何恺明团队又发新作!!-用于物理推理的去噪哈密顿网络
  • 五一假期“热潮”来袭,计划南下的小伙伴注意了
  • 三亚一景区发生游客溺亡事件,官方通报:排除他杀
  • 面对面倾听群众意见建议,及时回应解决群众“急难愁盼”问题!龚正在基层开展下访活动,调研城市更新
  • 特朗普签署行政命令推动深海采矿,被指无视国际规则,引发环境担忧
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 梁启超“失肾记”的余波:中西医论战与最后的真相