Java Lambda基础——Function, Consumer, Predicate, Supplier, 及FunctionalInterface接口

这几个接口经常与Lambda结合使用,网上当然也有很多介绍,不过有些过于繁琐,有些又偏简单,秉着实用主义精神,今天这里折中一下,把介绍的内容分为两部分,第一部分相当于TLDR,总结几个”口诀”,便于大家记忆,对于更想看用法示例的同学们,第二部分者提供了所有这些接口的示例。希望对大家有所帮助。

_√_如无参数,请使用Supplier(Use Supplier if it takes nothing)

_√_如无返回,请使用Consumer(Use Consumer if it returns nothing)

_√_如两者都无,请使用Runnable(Use Runnable if it does neither)

_√_如两者都有,请使用Function(Use Function if it does both)

_√_如返回布尔值,请使用Predicate(Use Predicate if it returns a boolean)

_√_如以上皆不可以,请使用自定义@FunctionalInteface(Use @FunctionalInteface if none of above works)

private static  T testSupplier(Supplier supplier) {    return supplier.get();}...Integer s = testSupplier(() -> 7 + 3); System.out.println(s); 
private static  void testConsumer(Consumer consumer, T data) {    consumer.accept(data);}...testConsumer(System.out::println, "dummy"); 
private static void testRunnable(Runnable runnable) {    runnable.run();}...testRunnable(() -> System.out.println("dummy")); 
private static  R testFunction(Function function, T data) {    return function.apply(data);}...Integer f = testFunction((d) -> d * 2, 3); System.out.println(f); 
private static  boolean testPredicate(Predicate predicate, T data) {    return predicate.test(data);}...boolean p = testPredicate((d) -> d > 0, 100); System.out.println(p); 
public interface CalculationFuncInterface<T, U, R> {    public R apply(T l, U i);}...private static  R testFunctionalInterface(CalculationFuncInterface cal, T data1, U data2) {    return cal.apply(data1, data2);}...Integer fi = testFunctionalInterface((a, b) -> a * b, 6, 7); System.out.println(fi); 

今天的介绍就先到这,感谢大家,Cheers!

公众号”后厂村思维导图馆”,欢迎关注。

O’Reilly

纸质书(亦有一批PDF分享)!

Original: https://www.cnblogs.com/morvenhuang/p/10113608.html
Author: Morven.Huang
Title: Java Lambda基础——Function, Consumer, Predicate, Supplier, 及FunctionalInterface接口

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/537305/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Android webview只加载10%且出现白屏问题排查解决

    原文:Android webview只加载10%且出现白屏问题排查解决 – Stars-One的杂货小窝 问题 有一个主页面,布局里是包含的一个自定义Webview,并…

    Java 2023年6月13日
    084
  • JSON

    JSON 什么是json json是一种轻量级的数据交换格式 采用完全独立于编程语言的文本格式来存储和表示数据 简洁和清晰的层次结构使得json成为理想的数据交换语言 易于人阅读和…

    Java 2023年6月13日
    082
  • 15.log4j.properties

    set log levels log4j.rootLogger = INFO,stdout,E out console log4j.appender.stdout = org.ap…

    Java 2023年6月13日
    073
  • 推荐一款企业管理专用低代码工具,实现开发系统自由!

    之前分享过很多类型的文章,但是发现大家对低代码相关的文章,兴致还是比较高的,争议也很大。因为不少人认为低代码太草率,但真正的低代码不仅要负责生成代码,还要负责代码的维护,把它当做一…

    Java 2023年6月5日
    0131
  • 【HarmonyOS】【JAVA UI】HarmonyOS 网络HttpURLConnection的基本使用

    ​ 参考资料 权限开发指导 线程管理 在鸿蒙(HarmonyOS)环境下,优雅的完成Http访问网络【教程】 api讲解 创建 url URL url=new URL(urlstr…

    Java 2023年5月29日
    0144
  • TL,你是如何管理项目风险的?

    沙包和打伞的故事 美国在1961年到1972年组织实施的一系列载人登月飞行任务。目的是实现载人登月飞行和人对月球的实地考察,为载人行星飞行和探测进行技术准备,它是世界航天史上具有划…

    Java 2023年6月8日
    083
  • web上线部署系统 Walle

    Walle瓦力是基于git和rsync实现的一个web部署系统工具。 用户分身份注册、登录 开发者发起上线任务申请 管理者审核上线任务 支持多项目部署 快速回滚 部署前准备任务(前…

    Java 2023年6月8日
    084
  • Fizz网关入门教程-快速聚合多接口

    背景介绍 先看一张图,页面一共调用了20多个后端接口,页面出现了明显的卡顿,而且每6个请求一组,只有前一组返回后才执行下一组。看到请求是pending状态,很容易以为是后端接口的问…

    Java 2023年6月9日
    094
  • 发送POST请求时发生 java-org.springframework.http.converter.HttpMessageNotReadableException

    本质上就是因为尝试用@RequestBody 接收一个变量,但是这样spring是不允许的,所以需要专门写一个类或者直接用实体类接收,这样就可以了. https://www.jb5…

    Java 2023年5月29日
    099
  • 原型模式详解

    原型模式 1.1原型模式概述 1.1.1原型模式定义 原型模式(Prototype Pattern)指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象,属于创建型设计模…

    Java 2023年6月7日
    0114
  • 设计模式之行为型模式-1. 迭代器模式与访问者模式

    行为型模式 一、行为型模式简介 迭代器模式(Iterator) 访问者模式(Visitor) 命令模式(Command) 解释器模式(Interpreter) 职责链模式(Chai…

    Java 2023年6月7日
    097
  • 引路蜂地图API:Gis.Navigation包定义

    本包提供了路口到路口实时导航API,从地图服务器返回的路径信息含有文字和路径的地理坐标信息,类NavigationEngine根据路径和当前坐标实现实时导航。它内部含用三个工作线程…

    Java 2023年5月30日
    094
  • [学习笔记] Java枚举

    在Java中,枚举是一种特殊的类,一般用于表示一组常量; 定义枚举时使用 enum关键字,各个常量使用逗号分隔; 也可以在类的内部定义枚举: 每个枚举都以内部类的形式实现,且所有的…

    Java 2023年6月5日
    082
  • mysql查询json数组中的某个值

    mysql5.7版本后支持json字段的检索查询。 使用 字段->’$.json属性’进行查询条件 使用 json_extract 函数查询 , js…

    Java 2023年6月8日
    075
  • 查找Java maven项目,和reactJS项目的license

    ReactJS: npm install -g license-checker npm install -g yui-lint license-checker –pro…

    Java 2023年5月29日
    067
  • JNPF3.4.2系统升级公告

    尊敬的引迈客户: 您好!为了给您提供更优质的服务,引迈信息将对JNPF快速开发平台进行优化,并于近期同步上线,新版本、新升级,全新体验,敬请期待! 本次优化涉及【在线开发】、【流程…

    Java 2023年6月5日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球