Lambda表达式

Posted 丶烟雨丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lambda表达式相关的知识,希望对你有一定的参考价值。

  今天复习Lambda表达式,因为这个是java8的新特性,所以JDK和IDE弄了好久,现在才刚弄好。

  Lambda表达式是java8的新特性,支持将代码块作为方法参数,Lambda表达式允许使用更简洁的方式来创建只有一个抽象方法的接口(函数式接口)的实例,其中,被大家都知道的就是使用Lambda表达式创建Thread实例。这种方式大大简洁化了大家的代码。

  Lambda表达式由三部分组成,形参列表,箭头"->",代码块。其中,形参列表允许省略形参类型,如果只有一个新参,甚至形参列表的圆括号也可以省略。箭头必须使用英文的画线和大于号。代码块就是处理行为,才某些特殊情况下,可以省略花括号和return关键字。

  下面就一个简单例子来具体说一下,代码如下:

package LambdaTrain;

public class demo1 
{
	/*
	 * 测试使用的代码,分别要传入各自的参数
	 */
	public void eat(Eatable e)
	{
		System.out.println(e);
		e.taste();
	}
	public void drive(Flyable f)
	{
		System.out.println("我正在驾驶:"+f);
		f.fly("【碧空如洗的日子】");
	}
	public void test(Addable add)
	{
		System.out.println("5与3的和为:"+add.add(5, 3));
	}
	/*
	 * 主方法,其中的方法参数都是使用lambda表达式
	 */
	public static void main(String[] args)
	{
		demo1 demo1=new demo1();
		//lambda表达式的代码只只有一句,可以省略“{}”
		//这里的lambda表达式实际上被当成任意的类型,具体的类型取决于运行环境的需要
		demo1.eat(()->System.out.println("苹果的味道不错"));
		//方法的形参只有一个,可以省略“()”  weather是接口方法的形参
		demo1.drive(weather->{
			System.out.println("今天的天气是:"+weather);
			System.out.println("直升机飞行平稳");
		});
		//代码只有一句,可以省略“{}”,同时也可以省略return关键字 a+b是返回值
		demo1.test((a,b)->a+b);
		
	}

}
/*
 * 测试使用的接口,只有一个抽象方法的接口(函数式接口)
 */
interface Eatable
{
	void taste();
}
interface Flyable
{
	void fly(String weather);
}
interface Addable
{
	int add(int a,int b);
}

  上面就是例子的代码,有一些不懂的地方都写了注释了。Lambda表达式其实只是一个工具,具体的学习还是要和其他的学习放在一起,比如线程的学习中会用到Lambda表达式。就这样吧,结束。

以上是关于Lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章

JAVA由一个将JSONArray转成Map的需求引发的lambda语法的学习

函数式编程

C# fun

Lambda表达式

Lambda表达式

Lambda表达式