java8: lambda表達式的參數

lambda表達式由三個部分組成: java

  1. 一個括號,包括用逗號分隔的參數列表,若是隻有一個參數,你能夠省略括號。另外你能夠省略參數的類型
  2. 一個箭頭符號: -> 
  3. 方法體:能夠是表達式和代碼塊(即函數式接口裏面方法的實現),若是是代碼塊,則必須用{}來包裹起來。注意若函數式接口裏面方法返回值是void,則無需{}

下面的代碼樣例說明在使用lambda表達式時如何傳遞一個或多個參數。 ide

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);
}
相關文章
相關標籤/搜索