博客详情

java8--lambda表达式 (原创)

作者: 朝如青丝暮成雪
发布时间:2018-10-24 17:01:23  文章分类:java8   阅读(1076)  评论(0)

java8中lambda表达式,类似c#中 lambda表达式,ES6中的箭头函数 。


定义:

若java 接口中只有一个抽象方法,我们new 这个接口的实例时需要实现这个唯一的抽象方法,除此之外我们还可以使用一种新的表达方式来new这个接口的实例对象,这就是lambda表达式。这就是说,对于任何只有一个抽象方法的接口,都可以采用lambda的方式产生这个接口的实例对象。


示例 :

例如,我们有一个MathOP接口,里面只有一个唯一的抽象方法。


interface  MathOP{
 int op(int a ,int b);
}


new这个接口的实例对象时,就可以采用lambda的方式,如:

 MathOP  add =(a,b)-> {return a+b;};//加法

MathOP  sub =(a,b)-> a-b;//减法  
MathOP  multiply =(a,b)-> a*b;//乘法
MathOP  divide =(a,b)-> a/b;//除法

 System.out.println(add.op(4, 5));
System.out.println(sub.op(4, 5));
System.out.println(multiply.op(4, 5));
System.out.println(divide.op(11, 5));

新定义个方法,传入MathOP 类型的参数 

public static  int  myoperate(MathOP  mathOP  ,int a, int b) {
  return mathOP.op(a, b);
}

 System.out.println(myoperate(multiply,3,10));//调用myoperate方法

lambda语法:

  (参数列表)->{方法体}     如 (a,b)->{return a+b;};

1、当参数列表中只有一个参数时,可省略小括号 如 a->{return a+b;};  

2、当参数列表中没有参数,则需要保留一个空的小括号  如()->{System.out.println("hello");};

3、当参数列表中含有多个参数时,小括号必须保留,且参数列表中每一个参数都应提供, 如 (a,b)->{return a+b;};

4、参数列表中的每个参数的java类型是可选的,如 (String a)->{return a+b;}; 可省略参数类型String 为 (a)->{return a+b;}; 

5、如果方法体中有多条语句,则必须用{}括起来,且{}中的每条语句必须以分号结尾。如果方法体中只有一条语句,

     则可省略{},且无需添加return以返回数据(隐式的return 了) ,如 a-> a*2  







关键字:  java8  lambda

上一篇:java8--新特性

下一篇:java8--函数式接口

评论信息
暂无评论
发表评论

亲,您还没有登陆,暂不能评论哦! 去 登陆 | 注册

博主信息
   
数据加载中,请稍候...
文章分类
   
数据加载中,请稍候...
阅读排行
 
数据加载中,请稍候...
评论排行
 
数据加载中,请稍候...

Copyright © 叮叮声的奶酪 版权所有
备案号:鄂ICP备17018671号-1

鄂公网安备 42011102000739号