Java8 中的 Lambda表達式 須要「函數式」接口的支持;java
函數式接口 :只有一個抽象方法的接口;api
Consumer<T>oracle
void accept(T t);
Supplier<T>app
T get();
Function<T, R>函數
R apply(T t);
Predicate<T>學習
boolean test(T t);
其餘函數式接口可在 java.util.function 包中獲取學習;code
@FunctionalInterface public interface XXX<T , ...> { XXX xxx(T t , ...); }
注意:接口
結構 : (...) -> {...}get
-> Lambda操做符 (或稱爲 剪刀操做符 )編譯器
左邊 入參
右邊 Lambda 體,即 Lambda 表達式要執行的功能
Consumer<String> consumer = (t) -> System.out.println(t);
Supplier<String> supplier = () -> "hello";
Function<String, String> function = (t) -> t + "world";
Predicate<Integer> predicate = (t) -> t >= 60;
Lambda 表達式中無需指定類型,程序依然能夠編譯,這是由於 javac 根據程序的上下文,在後臺推斷出了參數的類型。 Lambda 表達式的類型依賴於上下文環境,是由編譯器推斷出來的。這就是所謂的「類型推斷」。
注意: