java lambda 表達式

java lambda 表達式

lambda 是 java 8 引入的新特性,lambda 能替換簡單的函數和類,簡化了代碼,提高了代碼可讀性

語法

(Type1 param1, Type2 param2, ...) -> {
    statement1;
    statement2;
    ...
    return statementX;
}
  1. 如果參數類型可以自動推導,可以省略
  2. 如果參數只有一個,小括號可以省略
  3. 如果主體只有一條語句,大括號可以省略
  4. 如果主體只有一條語句,return 語句可以省略

函數式接口

java 裏面沒有函數對象,所以提供了很多隻有一個方法的接口,這類接口被稱爲函數式接口,這些接口可以用 lambda 表達式來構造

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

也可以用 <class>::new 引用無參構造函數,帶參構造函數可以用上面的 lambda 語法構造

Consumer<Integer> print = System.out::println;
Predicate<String> empty = String::isEmpty;
Supplier<Date> date = Date::new;

鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章