码迷,mamicode.com
首页 > 编程语言 > 详细

Java8自定义函数式编程接口

时间:2019-04-12 19:25:04      阅读:325      评论:0      收藏:0      [点我收藏+]

标签:tip   通过   sys   编程   不同   turn   add   pre   形式   

什么是函数编程接口?

抽象方法有且只有一个,并且被@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自定义函数式编程接口

标签:tip   通过   sys   编程   不同   turn   add   pre   形式   

原文地址:https://www.cnblogs.com/theRhyme/p/10697843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!