欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java函数式编程

程序员文章站 2022-06-07 12:11:28
...

最近在研究函数式编程,开始很痛苦,完全看不懂,但是不要着急,研究两天之后,大概有一些认知,首先看一下funcation接口。
一。Funcation详解:
重要的方法:

  1. R apply(T t);
    
  2. default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
     Objects.requireNonNull(before);
     return (V v) -> apply(before.apply(v));
    
    }
  3. default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
    Objects.requireNonNull(after);
    return (T t) -> after.apply(apply(t));
    
    }
  4.      static <T> Function<T, T> identity() {
    return t -> t;
    
    }
    看代码解释啥意思:
    主要解释一下2.3方法的意思,14比较简单就不说了,
    public static void main(String[] args) {
        Function<Integer,Integer> A=i->i+1;
        Function<Integer,Integer> B=i->i*i;

        // A.andThen(B).apply(5) 就是把A.apply(5)的值作为作为andThen的参数传递进去
        System.out.println("F111:"+A.andThen(B).apply(5));
        System.out.println("F1:"+B.apply(A.apply(5)));
        // 先执行B的apply函数,把结果作为B的apply的参数传递进去
        System.out.println("F22:"+A.compose(B).apply(5));
        System.out.println("F2:"+A.apply(B.apply(5)));
    }

还是要说明下,,根据我的理解,上面代码中,AB都是一种规则,映射规则。apply()决定,执行这个规则后要做的事情,这里就是返回执行规则的结果,apply()里面的参数就是要传入的数据。多以,A.apply(5)指的就是,执行A规则,传入的参数是5,执行完之后要做的事就是apply,返回结果。我在一开始学习的时候不是很理解为什么要有apply()这个方法名,直接A(),不更好理解吗,后来仔细想想,方法名的作用就是要告知,执行完规则后要做的事情,是把结果返回还是消耗掉。以后在研究吧。