JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口
Posted 所得皆惊喜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口相关的知识,希望对你有一定的参考价值。
文章目录
①. 函数式接口的概述
- ①. 如何检测一个接口是不是函数式接口呢?(函数式接口:有且仅有一个抽象方法的接口)
- @FunctionalInterface
- 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败
- ②. 注意
- 我们自己定义函数式接口的时候,@FunctionalInterface 是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解
- 如果方法的参数是一个函数式接口,我们可以使用Lambda表达式作为参数传递
②. Supplier 没有参数,只有返回值
-
①. T get( ):获取结果
-
②. 该方法不需要参数,它会按照某种逻辑(由Lambda表达式实现)返回一个数据
-
③.Supplier
<T>
接口也称为生产型接口,如果我们指定了接口泛型是什么类型,那么接口中的get方法就会生产什么类型的数据供我们使用
③. consumer 只有输入,没有返回值
-
①.
void accept(T t):
对给定的参数执行此操作 -
②.
default Consumer<T> andThen(Consumer after):
返回一个组合的 Consumer,依次执行此操作,然后执行 after操作 -
③.
Consumer<T>
接口也被称为消费型接口,它消费的数据的数据类型由泛型指定
public class ConsumerDemo {
public static void main(String[] args) {
// operatorString("皮卡丘",(String s) -> {
// System.out.println(s);
// });
operatorString("皮卡丘", s -> System.out.println(s));
// operatorString("皮卡丘",System.out::println);
// operatorString("林青霞", s -> {
// System.out.println(new StringBuilder(s).reverse().toString());
// });
operatorString("皮卡丘", s -> System.out.println(new StringBuilder(s).reverse().toString()));
System.out.println("--------");
operatorString("皮卡丘", s -> System.out.println(s), s -> System.out.println(new StringBuilder(s).reverse().toString()));
}
//定义一个方法,用不同的方式消费同一个字符串数据两次
private static void operatorString(String name, Consumer<String> con1, Consumer<String> con2) {
// con1.accept(name);
// con2.accept(name);
con1.andThen(con2).accept(name);
}
//定义一个方法,消费一个字符串数据
private static void operatorString(String name, Consumer<String> con) {
con.accept(name);
}
}
④. Predicate有一个输入参数,返回boolean
-
①.
boolean test(T t):
对给定的参数进行判断(判断逻辑由Lambda表达式实现),返回一个布尔值 -
②. 断定型接口:有一个输入参数,返回值只能是布尔值
⑤. Function:有一个输入参数,有一个输出
-
①. R apply(T t):将此函数应用于给定的参数
-
②. default
<V>
Function andThen(Function after):返回一个组合函数,首先将该函数应用于输入,然后将after函数应用于结果
以上是关于JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口的主要内容,如果未能解决你的问题,请参考以下文章
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_8_常用的函数式接口_Supplier接口