Java8自定义函数式编程接口
Posted rhyme
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8自定义函数式编程接口相关的知识,希望对你有一定的参考价值。
什么是函数编程接口?
抽象方法有且只有一个,并且被@FunctionalInterface注解该接口。
自定义一个函数式编程接口
/** * 自定义一个函数式编程接口 * 函数式编程只有一个抽象方法,所以默认的是实现的是这个抽象方法 * @param <T> * @param <R> */ @FunctionalInterface public interface CalcFunctionInterface<T, R> { /** * 计算t1和t2 * * @param t1 * @param t2 * @return */ R calc(T t1, T t2); }
传入不同calc函数实现的对象,进行调用
相当于以前创建CalcFunctionInterface的匿名类,实现了calc方法(由于只有一个抽象方法,所以默认就是calc方法)
/** * 相当于一个类实现了CalcFunction接口中的唯一一个函数calc * 然后在利用多态,调用calc函数,传入两个参数,进行计算 */ @Test public void add(){ CalcFunctionInterface<Integer, Integer> add = (t1, t2) -> t1+t2; Integer calc = add.calc(2, 3); System.out.println(calc); // 5 }
传入一个匿名类对象,进行方法调用calc
@Test public void multiply(){ // 相当于通过匿名类的形式传入一个实现了CalcFunctionInterface接口的子类对象,重写了该接口的方法 Integer calc = FunctionalInterfacesTest.calc(2, 3, (t1, t2) -> t1 * t2); System.out.println(calc); // 6 } /** * 接受了一个对象,利用对象的calc方法计算 */ public static Integer calc(Integer i1, Integer i2, CalcFunctionInterface<Integer, Integer> calc){ return calc.calc(i1,i2); }
后续补充Java8的函数式编程接口
以上是关于Java8自定义函数式编程接口的主要内容,如果未能解决你的问题,请参考以下文章
Java8新特性——Lambda表达式之基本语法 & 自定义函数式接口
Java8新特性——Lambda表达式之基本语法 & 自定义函数式接口
Java8函数式接口编程lambda表达式FunctionalInterface注解SupplierConsumerPredicateFunction函数式接口
Java8新特性函数式编程API新时间日期处理APIOptional容器类总结