论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
企业信息化/数字化
›
ERP
›
SAP
›
Function源码解析与实践
Function源码解析与实践
反转基因福娃
金牌会员
|
2022-11-29 17:34:15
|
显示全部楼层
|
阅读模式
楼主
主题
560
|
帖子
560
|
积分
1680
作者:陈昌浩
1 导读
if…else…在代码中经常使用,听说可以通过Java 8的Function接口来消灭if…else…!Function接口是什么?如果通过Function接口接口消灭if…else…呢?让我们一起来探索一下吧。
2 Function接口
Function接口就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口,Function接口可以被隐式转换为 lambda 表达式。可以通过FunctionalInterface注解来校验Function接口的正确性。Java 8允许在接口中加入具体方法。接口中的具体方法有两种,default方法和static方法。
@FunctionalInterface
interface TestFunctionService
{
void addHttp(String url);
}
复制代码
那么就可以使用Lambda表达式来表示该接口的一个实现。
TestFunctionService testFunctionService = url -> System.out.println("http:" + url);
复制代码
2.1 FunctionalInterface
2.1.1 源码
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}
复制代码
2.1.2 说明
上图是FunctionalInterface的注解说明。通过上面的注解说明,可以知道FunctionalInterface是一个注解,用来说明一个接口是函数式接口。 函数式接口只有一个抽象方法。 可以有默认方法,因为默认方法有一个实现,所以不是抽象的。函数接口的实例可以用lambda表达式、方法引用或构造函数引用创建。
FunctionalInterface会校验接口是否满足函数式接口:
类型必须是接口类型,不能是注释类型、枚举或类。
只能有一个抽象方法。
可以有多个默认方法和静态方法。
可以显示覆盖java.lang.Object中的抽象方法。
编译器会将满足函数式接口定义的任何接口视为函数式接口,而不管该接口声明中是否使用FunctionalInterface注解。
3 Function接口主要分类
Function接口主要分类:
Function:Function函数的表现形式为接收一个参数,并返回一个值。
Supplier:Supplier的表现形式为不接受参数、只返回数据。
Consumer:Consumer接收一个参数,没有返回值。
Runnable:Runnable的表现形式为即没有参数也没有返回值。
3.1 Function
Function函数的表现形式为接收一个参数,并返回一个值。
3.1.1 源码
[code]@FunctionalInterfacepublic interface Function { R apply(T t); default Function compose(Function
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
反转基因福娃
金牌会员
这个人很懒什么都没写!
楼主热帖
WPF简单自动更新(升级)程序+服务端 ...
年度重磅!《2022华为开发者宝典》多元 ...
私藏!资深数据专家SQL效率优化技巧 ⛵ ...
设计模式---组合模式
拿到12家offer,想给大家分享一下面试 ...
使用 Kubeadm 部署 K8S安装
[20220909]bbed关于删除记录恢复的问题 ...
Spark快速上手(4)Spark核心编程-Spark ...
【KAWAKO】从mac上定时将腾讯云的数据 ...
如何将鸿蒙(harmonyOS)系统退回安卓 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表