JDK8新特性之函数式接口
什么是函数式接口
先来看看传统的创建线程是怎么写的
JDK8提供了几个内置的函数式接口,用在了许多API的地方,都可以拿来用,可以满足大部分应用。
1 | //Consumer<T> - T作为输入,执行某种动作但没有返回值 |
自定义函数式接口
1、自定义一个函数式接口
1 | @FunctionalInterface |
这里只有一个抽象方法,@FunctionalInterface注解可以不用写,至于为什么可以往下看。
2、新建一个引用函数式接口的类
1 | public static class NumberOperation<N extends Number, V extends Number> { |
3、测试函数式接口
1 | private static void testOperationFnInterface() { |
最后输出:
1 | 23 |
函数式接口规范
1、@FunctionalInterface标识为一个函数式接口只能用在只有一个抽象方法的接口上。
2、接口中的静态方法、默认方法、覆盖了Object类的方法都不算抽象方法。
3、@FunctionalInterface注解不是必须的,如果该接口只有一个抽象方法可以不写,它默认就符合函数式接口,但建议都写上该注解,编译器会检查该接口是否符合函数式接口的规范。
举例说明
正确的函数式接口。
1 | @FunctionalInterface |
加了几个符合函数式的方法也没事,编译器也不会报错。
1 | @FunctionalInterface |
这个没用@FunctionalInterface函数式接口,有两个抽象方法,不能用于Lambda表达式。
1 | public interface CalcInterface<N, V> { |
这个有两个抽象方法的用@FunctionalInterface注解的函数式接口编译会报错。
1 | @FunctionalInterface |
这个没有一个抽象方法,编译报错。
1 | public interface CalcInterface<N, V> { |
推荐阅读
每个Java程序员必备的8个开发工具
本文由码农网 –王国峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划!现在有很多库、实用工具和程序任J...
Java实战之医院管理系统的实现
目录项目介绍环境需要技术栈使用说明效果图展示核心代码用户管理控制层医生管理控制层病房管理控制层项目介绍医院管理系统,分为管理员、医...
elasticsearch索引index之Translog数据功能分析
目录translog的结构及写入方式translogFile的继承关系TranslogFile快照的方法总结translog的结构...
java实现简单发送邮件功能
Java实现图片比率缩放
Java中的JetCache 实战
elasticsearch索引index之engine读写控制结构实现
目录engine的实现结构Engine类的方法:如index方法的实现:总结engine的实现结构elasticsearch对于...
elasticsearch索引index之Mapping实现关系结构示例
目录Mapping的实现关系结构Mapper的三类parse方法部分Field总结Mapping的实现关系结构Lucene索引的...
LeetCode 动态规划之矩阵区域和详情
目录题目题解解题分析解题代码题目矩阵区域和给你一个mxn的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个a...
elasticsearch索引的创建过程index create逻辑分析
目录索引的创建过程materOperation方法实现clusterservice处理建立索引修改配置总结索引的创建过程从本篇...