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

前言

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

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

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

Java8中的函数式接口

在这里插入图片描述

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

1. Supplier

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

普通函数写法:

private String generalFunction(){
    return "hello world"";
}

函数式编程:

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

有没有很简洁的感觉。

测试:

在这里插入图片描述

2. Consumer

只有一个输入,没有输出

普通函数写法:

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

函数式编程:

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

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

3. Function

输入T ,输出R

普通函数写法:

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

函数式编程:

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

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

4. UnaryOperator

输入、输出都是 T

普通函数写法:

private int generalFunction(Integer i) {
    return i * i;
}

函数式编程:

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

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

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

5. BiFunction

输入T 、U, 输出 R

普通函数写法:

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

函数式编程:

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

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

6. Predicate

输入T ,输出boolean

普通函数写法:

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

函数式编程:

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

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

。。。。。。

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


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

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


版权声明:本文为weixin_43847283原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43847283/article/details/126681737