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

Java函数式编程-之-函数式接口

程序员文章站 2022-07-10 21:14:23
package cn.t02;/** * 函数式接口: * 函数式接口即适用于函数式编程场景的接口,在Java中函数式编程的体现是Lambda. * 因此函数式接口可以适用于Lambda使用的接口. * 只有在确保接口中有且只有一个抽象方法时,Java中的Lambda才能顺利的推导! * * 语法糖:语法糖是指使用更加方便,但是原理不变的代码语法. * 例如:集合遍历使用的for-Each语法,其底层实现原理是迭代器. * 那for-Each对于迭代循环代码来说就是他的语法糖! *....
package cn.t02;

/**
 * 函数式接口:
 * 函数式接口即适用于函数式编程场景的接口,在Java中函数式编程的体现是Lambda.
 * 因此函数式接口可以适用于Lambda使用的接口.
 * 只有在确保接口中有且只有一个抽象方法时,Java中的Lambda才能顺利的推导!
 *
 * 语法糖:语法糖是指使用更加方便,但是原理不变的代码语法.
 * 例如:集合遍历使用的for-Each语法,其底层实现原理是迭代器.
 * 那for-Each对于迭代循环代码来说就是他的语法糖!
 *
 * 而Lambda在应用层面来看,可以把其当作匿名内部类的语法糖.(二者原理上不一样)
 *
 * @FunctionalInterface:
 * 为了保证接口中有且只有一个抽象方法,Java中提供了一个用来验证的注解;
 * 一旦在接口上标注了@FunctionalInterface,编译器就会强制检查接口是否有且只有一个
 * 抽象方法,否则就会报错.
 *
 * 需要注意:即使不使用@FunctionalInterface注解,只要满足函数式接口的定义,就仍然是
 * 一个函数式接口,使用起来效果是一样的!
 *
 */
@FunctionalInterface
public interface FunctionGo {

    /**
     * 接口中抽象方法的public abstract可以省略!
     */
    void gooing();
}

/**
 * 外部类:
 * 用来临时测试!
 */
class Test {

    /**
     * 调用自定义函数式接口:
     * 最典型的方法就是将其作为方法参数;
     *
     * 使用自定义的函数式接口作为方法参数!
     * @param fg
     */
    private static void goining(FunctionGo fg) {

        // 调用自定义函数式接口的方法!
        fg.gooing();
    }

    /**
     * Java主函数|入口!
     * @param args
     */
    public static void main(String[] args) {

        /**
         * 调用使用函数式接口的方法;
         */
        goining(() -> {
            System.out.println("123");
            System.out.println(888);
        });
    }
}

 

本文地址:https://blog.csdn.net/dalei9243/article/details/107336811