Java8中的函数式接口(你知道几个?)
  TEZNKK3IfmPf 2023年11月12日 53 0

前言

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

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

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

Java8中的函数式接口

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

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

1. Supplier

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

普通函数写法:

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

函数式编程:

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

有没有很简洁的感觉。

测试:

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

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

测试:

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

3. Function

输入T ,输出R

普通函数写法:

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

函数式编程:

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

测试:

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

4. UnaryOperator

输入、输出都是 T

普通函数写法:

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

函数式编程:

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

测试:

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

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

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;

测试:

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

6. Predicate

输入T ,输出​​boolean​​值

普通函数写法:

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

函数式编程:

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

测试:

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

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

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   23天前   25   0   0 接口
  TEZNKK3IfmPf   2023年11月15日   75   0   0 java8
TEZNKK3IfmPf