java8以上的函数式接口支撑三个以上参数

2020-03-22  本文已影响0人  zxbyh

    java8里面增加了java.util.function.Function和lambda
有了这两个东东 就可以 实现函数式编程的特征了。如果有两个参数的函数可以用BiFunction,但是三个以上怎么弄啦? 这时候就可以用柯里化的办法了。

直接上代码:

import java.util.function.Function;

public class KeliDemo2 {

    public static int funcP31(int p1,int p2,int p3){
        return (p1+p2)*p3;
    }

    public static int funcP32(int p1,int p2,int p3){
        return (p1+p2)/p3;
    }

    public static int funcGaojieStatic(int arg1,Function<Integer, Function<Integer, Function<Integer, Integer>>> triFunc){
        return triFunc.apply(arg1).apply(3).apply(5);
    }


    public static void main(String[] args) {
        System.out.println(
                funcGaojieStatic(1,x -> y -> z -> funcP31(x,y,z))
        );

        System.out.println(
                funcGaojieStatic(12,x -> y -> z -> funcP32(x,y,z))
        );
    }

}
上一篇下一篇

猜你喜欢

热点阅读