JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口

Posted 所得皆惊喜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA802_函数式接口的概述Supplier供给型接口consumer消费型接口Predicate断定型接口Function函数型接口相关的知识,希望对你有一定的参考价值。

①. 函数式接口的概述

  • ①. 如何检测一个接口是不是函数式接口呢?(函数式接口:有且仅有一个抽象方法的接口)
  1. @FunctionalInterface
  2. 放在接口定义的上方:如果接口是函数式接口,编译通过;如果不是,编译失败
  • ②. 注意
  1. 我们自己定义函数式接口的时候,@FunctionalInterface 是可选的,就算我不写这个注解,只要保证满足函数式接口定义的条件,也照样是函数式接口。但是,建议加上该注解
  2. 如果方法的参数是一个函数式接口,我们可以使用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函数型接口的主要内容,如果未能解决你的问题,请参考以下文章

Day24_函数式接口

阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_8_常用的函数式接口_Supplier接口

Java---函数式接口

java8常用函数式接口 Supplier ConsumerPredicateFunction总结

Java常用的函数式接口

37 常用函数式接口