JAVA中Lambda表达式与函数式接口怎么用
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要为大家展示了"JAVA中Lambda表达式与函数式接口怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JAVA中Lambda表达式与函数式
千家信息网最后更新 2025年01月17日JAVA中Lambda表达式与函数式接口怎么用
这篇文章主要为大家展示了"JAVA中Lambda表达式与函数式接口怎么用",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"JAVA中Lambda表达式与函数式接口怎么用"这篇文章吧。
Lambda表达式的诞生是为了解决JAVA创建匿名内部类代码冗余的问题。例子如下:
public class Lambda { public static void main(String[] args) { Gog gog = new Gog() { @Override public void say() { System.out.println("WOW"); } }; gog.say(); }}interface Gog { void say();}
这里我们想实现接口的say方法,由于实例化接口会创建匿名内部类,需要将接口中的所有方法实现。为了实现一个简单的方法冗余了许多代码出来。那么如果用Lambda 表达式去简化呢。例子如下:
public class Lambda { public static void main(String[] args) { //Lambda表达式的写法即: ()-> {函数实现} 当函数实现只有一行代码时,可以省略大括号 如下所示: Gog gog = () -> System.out.println("WOW"); gog.say(); }}interface Gog { void say();}
只包含一个抽象方法的接口称为函数式接口。而也只有函数式接口可以利用Lambda 表达式进行简化。其实原因很简单。如果接口中有多个方法,Lambda表达式将无法明确调用的是那个函数。
而根据抽象函数的返回值与参数列表,函数式接口可以简单的分为以下4种类型:
//1.供给型接口:Interface Supplier没有参数,有返回值interface Supplier { String say();}//2.消费型接口:Interface Consumer 只有输入,没有返回值interface Consumer{ void say(String name);}//3.断定型接口:Interface Predicate 传入参数t,返回值类型为boolean类型interface Predicate{ boolean say(String name);}//4.函数型接口:Interface Function 传入参数类型为T,返回值类型为Rinterface Function{ String say(int age);}
举几个我们身边中常用到的Lambda函数
public class MyThread { public static void main(String[] args) { new Thread(() -> { System.out.println("创建线程"); }).start(); }}
如上代码大家必然很熟悉,一个很简单的创建线程的方法。我们进入Thread对应的构造函数看看。
可以看到,我们调用的构造函数的入参是Runnable接口,而我们在看看我们创建的时候,明明使用的是Lambda 表达式,那么可以断定,Runnable接口必定是一个函数式接口
注意!!由于jdk8之后,接口中的函数可以拥有默认实现,这种拥有默认实现的方法,并不会影响这个接口成为函数式接口。例子如下:
public class Lambda { public static void main(String[] args) { Supplier supplier = ()-> "wow"; System.out.println(supplier.say()); }}interface Supplier { String say(); default String name(){ return ""; }}
Supplier 接口中有两个函数,但是依然可以成为函数式接口,利用Lambda 表达式进行简化。
以上是"JAVA中Lambda表达式与函数式接口怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
接口
函数
表达式
方法
类型
代码
参数
例子
内容
只有
篇文章
冗余
线程
学习
帮助
中常
一行
两个
会创
写法
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
16核512gb服务器价格
长沙市得舍网络技术有限公司
一入职就是软件开发经理
股票数据管理数据库
服务器租聘
边锋网络安全工程师
重庆便民平台软件开发公司
网络技术在社会工作的困难
校园网络安全类型是什么
小学电子屏幕网络安全措施
三亚海棠湾互联网科技园
许昌智云网络技术有限公司
河南系统软件开发定制费用
各种数据库的分页sql
0基础自学软件开发看什么书
adb向量数据库
江苏省网络安全技能
黑客网络安全问题
软件开发管理工具分类
网络安全怪用户知乎
怎样开展网络安全应急演练
我的世界服务器刷钻石
软件开发才6.5万年薪
数据库压力大崩了影响其他站点吗
网络安全的四大内容 包括
广东常用软件开发批发价
饥荒联机服务器改本地
效能软件开发岗位
dnf频道正在连接服务器
特种网络技术分类代理商