函数接口
2019-08-16 12:25:50来源:博客园 阅读 ()
函数接口
目录
- 前言
- 正文
- 函数式接口
- 什么是函数式接口
- 函数式接口
- 函数接口注解@FunctionalInterface
- jdk8之前已有的函数式接口
- 新定义的函数式接口
- 自定义函数式接口
- 函数式接口
- 总结
- 参考资料
前言
最近在项目中发现了同事写的代码,用到了很多Java8的特性,本篇就写关于函数式接口的;
正文
函数式接口
什么是函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为lambda
表达式。Lambda
表达式和方法引用(实际上也可认为是Lambda表达式)上。
函数式接口
可以将lambda表达式作为参数传入方法,并处理;
函数接口注解@FunctionalInterface
该注解主要起一个标记校验作用,在编译时校验该接口是否遵循函数式接口规则;
Java 不会强制要求你使用@FunctionalInterface
注解来标记你的接口是函数式接口, 然而,作为API作者, 你可能倾向使用@FunctionalInterface
指明特定的接口为函数式接口, 这只是一个设计上的考虑, 可以让用户很明显的知道一个接口是函数式接口。
未违反规则:
@FunctionalInterface
public interface TestFunc {
void test();
}
违反规则:
注解规则
- 可以定义默认方法
- 允许定义静态方法
- 允许定义
java.lang.Object
里面的public
方法
jdk8之前已有的函数式接口
java.lang.Runnable
java.util.concurrent.Callable
java.security.PrivilegedAction
java.util.Comparator
java.io.FileFilter
java.nio.file.PathMatcher
java.lang.reflect.InvocationHandler
ava.beans.PropertyChangeListener
java.awt.event.ActionListener
javax.swing.event.ChangeListener
新定义的函数式接口
集中在java.util.function
包下边;
Predicate
-- 传入一个参数,返回一个bool结果, 方法为boolean test(T t)Consumer
-- 传入一个参数,无返回值,纯消费。 方法为void accept(T t)Function
-- 传入一个参数,返回一个结果,方法为R apply(T t)Supplier
-- 无参数传入,返回一个结果,方法为T get()
自定义函数式接口
- 自定义函数式接口类:
@FunctionalInterface
public interface AnnotationFunc {
/**
* 注释执行方法回调
*/
void callBack();
}
- 使用函数式接口类
public class TestTwo {
public static void main(String[] args) {
//赋值函数
AnnotationFunc annotationFunc=()-> System.out.println("test");
//调用方法执行
annotationFunc.callBack();
}
}
- 结果
test
Process finished with exit code 0
总结
这里大概的了解了Java8的函数式编程,可以将函数(lambda
表达式)作为参数传递
参考资料
- JAVA 8 函数式接口 - Functional Interface
- Java 8函数式接口functional interface的秘密
- JDK8函数式接口Function、Consumer、Predicate、Supplier
- 《Java8实战》
原文链接:https://www.cnblogs.com/guoyuchuan/p/11342686.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:javaIO——概述
- Spring系列.ApplicationContext接口 2020-06-11
- 构造函数中的this()和super() 2020-06-10
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- Java生鲜电商平台-生鲜电商接口幂等性原理与防重复提交方案( 2020-06-05
- Java连载120-反射机制获取构造方法和父类、父接口 2020-06-05
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash