黑马程序员技术交流社区

标题: 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)以来最大的变化。


  下面给大家演示一下语法格式:
  (参数)-{语句块}
  其中只有一个参数的化()可以省略
  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