当前位置: 首页 > 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.xdnf.cn/news/157969.html

相关文章:

  • Nacos简介—3.Nacos的配置简介
  • SQL盲注问题深度解析与防范策略
  • 逆向|dy|a_bogus|1.0.1.19-fix.01
  • IDE使用技巧与插件推荐
  • LLM(大语言模型)技术的最新进展可总结
  • ShaderToy学习笔记 02.圆
  • HTTP, AMQP, MQTT之间的区别和联系是什么?华为云如何适配?
  • iperf网络性能测试
  • OpenCV第6课 图像处理之几何变换(缩放)
  • compose 二维码扫描qrcode
  • 进制转换编程实现
  • Eclipse 插件开发 3 菜单栏
  • Java数据结构——Stack
  • Gin框架
  • 【股票系统】使用docker本地构建ai-hedge-fund项目,模拟大师炒股进行分析。人工智能的对冲基金的开源项目
  • 测试用例的设计
  • 股指期货成交量是单边还是双边?
  • 慢查询日志对于分析mysql数据库性能有什么帮助
  • crossOriginLoading使用说明
  • 达芬奇模板 15组现代简洁文字标题动画 Modern Titles v2.0 DR
  • 搭建基于火灾风险预测与防范的消防安全科普小程序
  • 客户案例 | 光热+数智双驱动!恒基能脉的数字化协同与技术创新实践
  • 启动 n8n 步骤指南
  • x86系列CPU寄存器和汇编指令总结
  • 【新技术】微软 Azure Test Impact Analyzer (TIA) 全面解析
  • Python Cookbook-6.10 保留对被绑定方法的引用且支持垃圾回收
  • Spark 极速回顾
  • AIGC在游戏开发中的革命:自动化生成3A级游戏内容
  • 如何使用WebRTC
  • Cisco Packet Tracer使用 搭建网络拓扑