java8: lambda表示式的引數
阿新 • • 發佈:2020-08-09
lambda表示式由三個部分組成:
- 一個括號,包括用逗號分隔的引數列表,如果只有一個引數,你可以省略括號。另外你可以省略引數的型別
- 一個箭頭符號:->
- 方法體:可以是表示式和程式碼塊(即函式式接口裡面方法的實現),如果是程式碼塊,則必須用{}來包裹起來。注意若函式式接口裡面方法返回值是void,則無需{}
下面的程式碼樣例說明在使用lambda表示式時如何傳遞一個或多個引數。
public class Main {
public static void main(String[] args) {
startTest(new Lambda() {
@Override
public void doSomething() {
System.out.println("通過匿名類方式實現");
}
});
startTest(new ParamLambda() {
@Override
public void doSomething(String param1) {
System.out.println("通過匿名類方式實現,引數的值是:" + param1);
}
});
startTest(() -> {
System.out.println("使用lambda表示式:無引數");
});
startTest((param1) -> {
System.out.println("使用lambda表示式:一個引數,其值是:" + param1);
});
startTest((param1, param2) -> {
System.out.println("使用lambda表示式:一個引數,其值是:" + param1 + "," + param2);
});
}
public static void startTest(Lambda obj) {
obj.doSomething();
}
public static void startTest(ParamLambda obj) {
obj.doSomething("to do something");
}
public static void startTest(MultiParamLambda obj) {
obj.doSomething("hi", "you must do something");
}
}
interface Lambda {
void doSomething();
}
interface ParamLambda {
void doSomething(String param1);
}
interface MultiParamLambda {
void doSomething(String param1, String param2);
}
來源:站長資訊