Java8的四大核心函数式接口

前言

在学习一段时间后会不会有这样的疑问—难道我要用Lambda表达式的时候总要自己写函数式接口吗?
当然不是这样了,Java8里面提供了四大核心的函数式供我们使用!

四大核心函数式接口

测试代码

    @Test
    public void testCoreInter(){
        /** * @name 消费型接口 * @use Consumer<T> * @param T 传入参数 * @fun 接受一个参数 无返回值 * */
        Consumer<String> con=(str)->System.out.println(str);
        con.accept("我是消费型接口!");

        /** * @name 供给型接口 * @use Supplier<R> * @param R 返回值类型 * @fun 无参数 有返回值 * */
        Supplier<Date> supp=()-> new Date();
        Date date=supp.get();
        System.out.println("当前时间:"+date);

        /** * @name 函数型接口 * @use Function<T,R> * @param T 传入参数 * @return R 返回值类型 * @fun 接受一个参数 有返回值 * */
        Function<String, String> fun=(str)->"hello,"+str;
        String str=fun.apply("张俊强");
        System.out.println(str);
        /** * @name 断定型接口 * @use Predicate<T> * @param T 传入参数 * @return Boolean 返回一个Boolean型值 * @fun 接受一个参数 返回Boolean型值 * */
        Predicate<Integer> pre=(num)->num>0;
        Boolean flag=pre.test(10);
        System.out.println(flag);
    }

输出结果

我是消费型接口!
当前时间:Wed Jun 21 22:08:19 CST 2017
hello,张俊强
true

拓展函数式接口

如果你觉得这几个还是不够用,那么可以参考下面的一些拓展的接口,其用法与上面大同小异:

序号接口 & 描述
1BiConsumer<T,U>

代表了一个接受两个输入参数的操作,并且不返回任何结果

2BiFunction<T,U,R>

代表了一个接受两个输入参数的方法,并且返回一个结果

3BinaryOperator<T>

代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果

4BiPredicate<T,U>

代表了一个两个参数的boolean值方法

5BooleanSupplier

代表了boolean值结果的提供方

6Consumer<T>

代表了接受一个输入参数并且无返回的操作

7DoubleBinaryOperator

代表了作用于两个double值操作符的操作,并且返回了一个double值的结果。

8DoubleConsumer

代表一个接受double值参数的操作,并且不返回结果。

9DoubleFunction<R>

代表接受一个double值参数的方法,并且返回结果

10DoublePredicate

代表一个拥有double值参数的boolean值方法

11DoubleSupplier

代表一个double值结构的提供方

12DoubleToIntFunction

接受一个double类型输入,返回一个int类型结果。

13DoubleToLongFunction

接受一个double类型输入,返回一个long类型结果

14DoubleUnaryOperator

接受一个参数同为类型double,返回值类型也为double 。

15Function<T,R>

接受一个输入参数,返回一个结果。

16IntBinaryOperator

接受两个参数同为类型int,返回值类型也为int 。

17IntConsumer

接受一个int类型的输入参数,无返回值 。

18IntFunction<R>

接受一个int类型输入参数,返回一个结果 。

19IntPredicate

:接受一个int输入参数,返回一个布尔值的结果。

20IntSupplier

无参数,返回一个int类型结果。

21IntToDoubleFunction

接受一个int类型输入,返回一个double类型结果 。

22IntToLongFunction

接受一个int类型输入,返回一个long类型结果。

23IntUnaryOperator

接受一个参数同为类型int,返回值类型也为int 。

24LongBinaryOperator

接受两个参数同为类型long,返回值类型也为long。

25LongConsumer

接受一个long类型的输入参数,无返回值。

26LongFunction<R>

接受一个long类型输入参数,返回一个结果。

27LongPredicate

R接受一个long输入参数,返回一个布尔值类型结果。

28LongSupplier

无参数,返回一个结果long类型的值。

29LongToDoubleFunction

接受一个long类型输入,返回一个double类型结果。

30LongToIntFunction

接受一个long类型输入,返回一个int类型结果。

31LongUnaryOperator

接受一个参数同为类型long,返回值类型也为long。

32ObjDoubleConsumer<T>

接受一个object类型和一个double类型的输入参数,无返回值。

33ObjIntConsumer<T>

接受一个object类型和一个int类型的输入参数,无返回值。

34ObjLongConsumer<T>

接受一个object类型和一个long类型的输入参数,无返回值。

35Predicate<T>

接受一个输入参数,返回一个布尔值结果。

36Supplier<T>

无参数,返回一个结果。

37ToDoubleBiFunction<T,U>

接受两个输入参数,返回一个double类型结果

38ToDoubleFunction<T>

接受一个输入参数,返回一个double类型结果

39ToIntBiFunction<T,U>

接受两个输入参数,返回一个int类型结果。

40ToIntFunction<T>

接受一个输入参数,返回一个int类型结果。

41ToLongBiFunction<T,U>

接受两个输入参数,返回一个long类型结果。

42ToLongFunction<T>

接受一个输入参数,返回一个long类型结果。

43UnaryOperator<T>

接受一个参数为类型T,返回值类型也为T。

    原文作者:片刻清夏
    原文地址: https://blog.csdn.net/zjq_1314520/article/details/73556167
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞