• Java8中的函数式接口(你知道几个?)


    人生如棋,我愿为卒,行动虽慢,谁曾见我后退半步! 👊👊👊

    前言

    Java 8对于程序员的主要好处在于它提供了更多的编程工具和概念,能以更快,更重要的是能以更为简洁、更易于维护的方式解决新的或现有的编程问题。今天来探究一下Java8中的函数式接口

    函数式接口的定义:类型是接口,有且只有一个抽象方法

    函数式接口一般都用@FunctionalInterface注解进行标注,当一个接口打上@FunctionalInterface注解之后就声明为一个函数式接口,这个接口中就只能有一个抽象方法,大于一个抽象方法就会报错。

    Java8中的函数式接口

    在这里插入图片描述

    不管什么,先来它一个 hello world练练手

    1. Supplier

    没有输入,只有一个输出T

    普通函数写法:

    private String generalFunction(){
        return "hello world"";
    }
    
    • 1
    • 2
    • 3

    函数式编程:

    // 恭喜你,已经掌握第一步 hello world
    Supplier<String> supplier = () -> "hello world";
    
    • 1
    • 2

    有没有很简洁的感觉。

    测试:

    在这里插入图片描述

    2. Consumer

    只有一个输入,没有输出

    普通函数写法:

    private void generalFunction(String i){
        System.out.println("this is a " + i);
    }
    
    • 1
    • 2
    • 3

    函数式编程:

    Consumer<String> consumer = i -> System.out.println("this is a " + i);
    
    • 1

    测试:
    在这里插入图片描述

    3. Function

    输入T ,输出R

    普通函数写法:

    //计算一个数的平方
    private int generalFunction(Integer i) {
        return i * i;
    }
    
    • 1
    • 2
    • 3
    • 4

    函数式编程:

    Function<Integer, Integer> function = i -> i * i;
    
    • 1

    测试:
    在这里插入图片描述

    4. UnaryOperator

    输入、输出都是 T

    普通函数写法:

    private int generalFunction(Integer i) {
        return i * i;
    }
    
    • 1
    • 2
    • 3

    函数式编程:

    UnaryOperator<Integer> unaryOperator = i -> i * i;
    
    • 1

    测试:
    在这里插入图片描述

    UnaryOperatorFunction的专门化,用于操作数和结果具有相同类型的情况。

    5. BiFunction

    输入T 、U, 输出 R

    普通函数写法:

    // 计算两个数相乘,并输出:x*j=?
    private String generalFunction(Integer i, Integer j) {
        return i + "*" + j + "=" + i * j;
    }
    
    • 1
    • 2
    • 3
    • 4

    函数式编程:

    BiFunction<Integer, Integer, String> biFunction = (i, j) -> i + "*" + j + "=" + i * j;
    
    • 1

    测试:
    在这里插入图片描述

    6. Predicate

    输入T ,输出boolean

    普通函数写法:

    // 判断一个字符串是否是 hello
    private boolean generalFunction(String s) {
        return "hello".equals(s);
    }
    
    • 1
    • 2
    • 3
    • 4

    函数式编程:

    Predicate<String> predicate = "hello"::equals;
    
    • 1

    测试:
    在这里插入图片描述

    。。。。。。

    除了以上介绍的,还有很多函数接口,看懂了这几个的定义方式 再去学习其他的一看就懂


    完整代码已上传 Gitee Spring整合常用组件 欢迎Star👍

    到此,本章内容就介绍完啦,如果有帮助到你 欢迎点个赞👍👍👍吧!!您的鼓励是博主的最大动力! 有问题评论区交流。

  • 相关阅读:
    Guava精讲(三)-Caches,同步DB数据到缓存
    力扣leetcode 670. 最大交换
    未登录也能知道你是谁?浏览器指纹了解一下!
    Mockaroo - 在线生成测试用例利器
    使用Mybatis generator自动生成代码,仅限Oracle数据库
    web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)
    P8662 [蓝桥杯 2018 省 AB] 全球变暖--2024蓝桥杯冲刺省一
    GreenPlum/PostGreSQL表锁处理
    笔记整理(安全)
    Flink 的 Kafka Table API Connector
  • 原文地址:https://blog.csdn.net/weixin_43847283/article/details/126681737