• 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👍

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

  • 相关阅读:
    模型的动态LOD优化
    ES6中Promise的理解以及它的实例方法
    京东云开发者|IoT运维 - 如何部署一套高可用K8S集群
    某60区块链安全之重入漏洞实战记录
    云服务器配置Code-Server环境并运行Python和C++
    PMP 11.27 考试倒计时8天!
    数据报表的种类
    Python深度学习-第一章、什么是深度学习
    怎么查看摄像头的ip地址
    自动驾驶与智能交通
  • 原文地址:https://blog.csdn.net/weixin_43847283/article/details/126681737