• Java 之 函数式接口


    函数式接口

    一、概念

      函数式接口在 java 中是指:有且仅有一个抽象方法的接口。

      函数式接口,即适用于函数式编程场景的接口。 Java中的函数式编程体现就是Lambda,所以函数式接口就是可以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。

      Tips语法糖是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实底层的实现原理仍然是迭代器,这便是语法糖。从应用层面来讲,Java中的Lambda可以被当做是匿名内部
    类的语法糖,但是二者在原理上是不同的。

    二、格式

      只要确保接口中有且仅有一个抽象方法即可。

      语法格式:

    修饰符 interface 接口名称 {
        public abstract 返回值类型 方法名称(可选参数信息);
        // 其他非抽象方法内容
    }
    

        由于接口当中抽象方法的 public abstract 是可以省略的,所以定义函数式接口很简单:

    public interface MyFunctionalInterface {
        void myMethod();
    }

    三、@FunctionalInterface 注解

      与 @Override 注解的作用类似,Java8中专门为函数式接口引入了一个新的注解:@FunctionalInterface。

      该注解可用于一个接口的定义上:

    @FunctionalInterface
    public interface MyFunctionalInterface {
        void myMethod();
    }
    

      一旦使用该注解来定义接口,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。

      需要注意的是,即使不适用该注解,只要满足函数式接口的定义,这仍然是一个函数式接口,使用起来都一样。

    四、自定义函数式接口

      对于刚刚定义好的 MyFunctionInterface 函数式接口,典型使用场景就是作为方法的参数:

     1 public class DemoFunctionalInterface {
     2         // 使用自定义的函数式接口作为方法参数
     3         private static void doSomething(MyFunctionalInterface inter) {
     4             inter.myMethod(); // 调用自定义的函数式接口方法
     5         }
     6 
     7         public static void main(String[] args) {
     8             // 调用使用函数式接口的方法
     9             doSomething(() ‐ > System.out.println("Lambda执行啦!"));
    10         }
    11     }
  • 相关阅读:
    《深入浅出MFC》第八章 Document-View深入探讨
    《深入浅出MFC》第九章 消息映射与命令传递
    C++ Primer 第十五章 面向对象程序设计
    《深入浅出MFC》第十四章 多线程程序设计
    《C++ Primer》第十八章 用于大型程序的工具
    liunx 配置ftp
    Linux中apche配置
    liunx 安装mysql
    liunx 安装jdk
    mysql
  • 原文地址:https://www.cnblogs.com/niujifei/p/11614081.html
Copyright © 2020-2023  润新知