Lambda表達式在java中由三部分組成:java
interface Eatable{ void taste(); } interface Flyable{ void fly(String weathrer); } interface Addable{ int add(int a,int b); } public class LambdaTest { public void eat(Eatable e) { e.taste(); System.out.println(e); } public void fly(Flyable f) { f.fly("好天氣"); System.out.println(f); } public void add(Addable a) { System.out.println(a.add(5, 3)); } public static void main(String[] args) { LambdaTest test = new LambdaTest(); test.eat(()->System.out.println("蘋果")); test.fly(weater->{ System.out.println("哈哈哈"); System.out.println("能夠飛行"); }); // 省略形參類型 省略花括號 test.add((a,b)->a+b); } }
Runnbale r =()->{ for(int i =0;i<100;i++){ System.out.println(i); } }; // 注意分號
Object obj = (Runnable)()->{ System.out.println(...); };
@FunctionalInterface interface Converter{ Integer convert(String from); } // 類方法 Converter con = from->Integer.valueOf(from); Converter con1 = Integer::valueOf; // 對象方法 Converter con2 = from->"hhhh".indexOf(from); Converter con3 = "hhhh"::indexOf; // 構造器相似 // ::new