黑马程序员技术交流社区
标题:
Lambda表达式之接口实例化
[打印本页]
作者:
庭院深深深几许
时间:
2019-4-28 16:08
标题:
Lambda表达式之接口实例化
给大家分享一下关于Lambda表达式之接口实例化的相关知识。首先Lambda表达式是JavaSE8中一个重要的新特性,它表达式允许你通过表达式来代替功能接口,并提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式还增强了集合库。JavaSE8添加了2个对集合数据进行批量操作的包java.util.function包以及java.util.stream包。流(stream)就如同迭代器(iterator),但附加了许多额外的功能。总的来说,lambda表达式和stream是自Java语言添加泛型(Generics)和注解(annotation)以来最大的变化。
20190225132435_1176.png
(92.8 KB, 下载次数: 8)
下载附件
2019-4-28 16:07 上传
下面给大家演示一下语法格式:
(参数)-{语句块}
其中只有一个参数的化()可以省略
Lambda表达式可以实现的操作:
1、完成接口的实例化或抽象类的实例化
比如我们线程的创建:
之前都是这样创建的:
PublicclassMy_Main
{
Publicstaticvoidmain(String[]args){
NewThread(newRunnable(){
Publicvoidrun(){
System.out.print(“子线程输出”);
}
}).start();
}
}
可是使用Lambda表达式却可以这样写:
PublicclassMy_Main2
{
Publicstaticvoidmain(String[]args){
NewThread(()-System.out.print(“子线程输出”)).start();
}
}
看起来Lambda表达式是不是很简洁。
再例如:
自定义一个接口,接口中有一个方法
publicinterfaceAAction{
voidwork(Stringname);
}
创建类进行测试
publicclassMy_Main{
privatestaticvoidt1(AActionaAction){
aAction.work(传智播客);
}
publicstaticvoidmain(String[]args){
t1((n)-System.out.println(n+快来传智播客学Java));
}
}
注意:Lambda表达式实现接口的实例化要求接口中只能有一个方法,如果有多个方法就不好推断。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2