zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    关于苹果IPhone/Ipad(IOS)开发者证书申请及安装、真机调试、发布的参考文章
    vs 关闭警告
    真机测试及布署Code Sign error问题总结
    在 Win32 Application 和 Win32 Console Application 中使用 MFC
    获取应用程序路径的区别
    js日期控件
    SQL SERVER 企业管理器 MMC 无法创建管理单元
    进程查看两利器
    用PowerDesigner逆向数据库工程时”Unable to list the table"错误的解决方法
    SQL 附加无日志数据库
  • 原文地址:https://www.cnblogs.com/niujifei/p/11614081.html
Copyright © 2011-2022 走看看