【原標題:Android中Lambda表達式進化 Java-函數(shù)式編程】Lambda表達式
java12正式發(fā)布,咱們還沒把java8搞清楚呢,說什么合格的java開發(fā)者。今天就開始整理一些java8的新特性。lambda表達式
lambda表達式的標準形式
(parameters) -> expression
或
(parameters) ->{statements; }
以下是lambda表達式的重要特征:
· 可選類型聲明:不需要聲明參數(shù)類型,編譯器可以統(tǒng)一識別參數(shù)值。
· 可選的參數(shù)圓括號:一個參數(shù)無需定義圓括號,但多個參數(shù)需要定義圓括號。
· 可選的大括號:如果主體包含了一個語句,就不需要使用大括號。
· 可選的返回關(guān)鍵字:如果主體只有一個表達式返回值則編譯器會自動返回值,大括號需要指定明表達式返回了一個數(shù)值。
public class Lambda { public static void main(String[] args) { //沒有參數(shù)時小括號一定要打,代碼塊需要打大括號 //更加簡單的實現(xiàn)接口 Runnable r = () -> { System.out.println("test"); System.out.println("test2"); }; new Thread(r).start(); //一個參數(shù)時,可以打小括號,也可以不打 //集合遍歷也可以使用lambda表達式 //一句代碼時可以打大括號,也可以不打 Listints = Arrays.asList(1, 2, 3, 4); ints.forEach(e -> System.out.println(e)); //多個參數(shù),參數(shù)的小括號一定要打 //更加簡單的實現(xiàn)接口 opration o = (a, b) -> { System.out.println(a + b); return a + b; }; o.add(1, 2); } interface opration{ int add(int a, int b); }}
Lambda 表達式主要用來定義行內(nèi)執(zhí)行的方法類型接口,當一個接口中存在多個抽象方法時,如果使用lambda表達式,并不能智能匹配對應的抽象方法,因此引入了函數(shù)式接口的概念,函數(shù)式接口就是只定義了一個抽象方法的接口
Lambda 表達式免去了使用匿名方法的麻煩,并且給予Java簡單但是強大的函數(shù)化的編程能力。