lambda 是 java 8 引入的新特性,lambda 能替換簡單的函數和類,簡化了代碼,提升了代碼可讀性java
(Type1 param1, Type2 param2, ...) -> { statement1; statement2; ... return statementX; }
java 裏面沒有函數對象,因此提供了不少只有一個方法的接口,這類接口被稱爲函數式接口,這些接口能夠用 lambda 表達式來構造git
Predicate<Integer> greater10 = x -> x > 10; Consumer<Integer> print = x -> System.out.println(x); Function<Integer, String> intToString = x -> Integer.valueOf(x).toString(); Supplier<Integer> randInt = () -> ThreadLocalRandom.current().nextInt(); Comparator<Integer> less = (x, y) -> y - x; UnaryOperator<Integer> power = x -> x * x; BinaryOperator<Integer> add = (x, y) -> x + y; BiConsumer<Integer, String> printis = (i, s) -> System.out.println(i + s); Runnable run = () -> System.out.println("hello world");
lambda 表達式能夠直接引用類或者對象的方法,語法: <object|class>::method
github
也能夠用 <class>::new
引用無參構造函數,帶參構造函數能夠用上面的 lambda 語法構造less
Consumer<Integer> print = System.out::println; Predicate<String> empty = String::isEmpty; Supplier<Date> date = Date::new;