1. 程式人生 > 實用技巧 >java8: lambda表示式的引數

java8: lambda表示式的引數

lambda表示式由三個部分組成:

  1. 一個括號,包括用逗號分隔的引數列表,如果只有一個引數,你可以省略括號。另外你可以省略引數的型別
  2. 一個箭頭符號:->
  3. 方法體:可以是表示式和程式碼塊(即函式式接口裡面方法的實現),如果是程式碼塊,則必須用{}來包裹起來。注意若函式式接口裡面方法返回值是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);
}
來源:站長資訊