当前位置: 首页 > 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 常用注解通俗解释
  • 何恺明团队又发新作!!-用于物理推理的去噪哈密顿网络
  • 中国证监会印发《推动公募基金高质量发展行动方案》
  • 李云泽:再批复600亿元,进一步扩大保险资金长期投资试点范围
  • 潘功胜:将下调个人住房公积金贷款利率0.25个百分点
  • 这个接班巴菲特的男人,说不出一个打动人心的故事
  • 巴基斯坦宣布关闭全国空域48小时
  • 默茨在德国联邦议院第一轮投票中未能当选总理