1. 程式人生 > >Lambda表達式(1)

Lambda表達式(1)

情況 例子 fly 裏的 駕駛 運行 pre lambda表達式 system

  今天復習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表達式(1)