ラムダ式

引数に関数型インターフェースのインスタンスを新たに定義して渡す場合は、ラムダ式にすることができる。

Java関数型インターフェースメモ(Hishidama's Java8 Functional Interface Memo)
Javaラムダ式メモ(Hishidama's Java8 Lambda Expression Memo)

インターフェースはこのままで、

TestFunctionalInterfaceのインスタンスを引数に取るメソッドmethod1を持つクラスTestClassを定義。
runで値を渡してインスタンスtifのfuncの処理を実行する。

// メインクラス
public class MainClass{	// MainClassの定義

	// Javaのエントリポイント
	public static void main(String[] args){	// mainメソッドの定義

		// 関数型インターフェースが持つ関数をその場で定義.
		TestClass testClass = new TestClass();	// TestClassオブジェクトtestClassを生成.
		testClass.method1(new TestFunctionalInterface(){	// TestFunctionalInterfaceをnewで生成し, funcを実装.
			@Override
			public int func(int x){
				return x * x;	// xの2乗を返す.
			}
		});
		System.out.println(testClass.run(2));	// 2を渡す.

	}

}

匿名クラスだと、このようにfuncの定義をその場でできる。
で2を渡してrunを実行すると、

4が出力
4が出力

4が出力。

さて、これをラムダ式にする。

ついでにfuncの処理も2乗から3乗に。

3乗なので8が出た。
3乗なので8が出た。

3乗なので8が出た。

Sample/java/LambdaExpression/LambdaExpression/src/LambdaExpression at master · bg1bgst333/Sample · GitHub