Java8中的函数式接口

举报
鱼找水需要时间 发表于 2023/02/19 20:16:42 2023/02/19
【摘要】 函数式接口的定义:类型是接口,有且只有一个抽象方法

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

前言

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

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

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

Java8中的函数式接口

2022-09-02-22-42-05.png

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

1. Supplier

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

普通函数写法:

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

函数式编程:

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

有没有很简洁的感觉。

测试:

2022-09-02-22-46-00.png

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);

测试:
2022-09-02-22-50-24.png

3. Function

输入T ,输出R

普通函数写法:

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

函数式编程:

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

测试:
2022-09-02-22-56-25.png

4. UnaryOperator

输入、输出都是 T

普通函数写法:

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

函数式编程:

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

测试:
2022-09-02-22-59-07.png

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;

测试:
2022-09-02-23-04-04.png

6. Predicate

输入T ,输出boolean

普通函数写法:

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

函数式编程:

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

测试:
2022-09-02-23-10-21.png

。。。。。。

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


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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。