java8--lambda表达式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jasnet_u/article/details/83474983

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  

猜你喜欢

转载自blog.csdn.net/jasnet_u/article/details/83474983