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

Java 之 函数式接口

时间:2019-09-30 22:05:19      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:代码   应用层   demo   简单   内容   修饰符   for   自定义函数   print   

函数式接口

一、概念

  函数式接口在 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     }

 

Java 之 函数式接口

标签:代码   应用层   demo   简单   内容   修饰符   for   自定义函数   print   

原文地址:https://www.cnblogs.com/niujifei/p/11614081.html

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