Java 8関数式プログラミングの方法リファレンス
1804 ワード
本文の参考:《30分入門Java 8の方法の引用》の方法の引用、一般的に4種類の形式があります:
リファレンス構築方法
Lamda式と等価
関数インタフェース
静的メソッドの参照
Lamda式と同等:
関数インタフェース
参照オブジェクトのインスタンスメソッド
Lamda式と同等:
関数インタフェース
参照タイプオブジェクトのインスタンスメソッド(※)
Lamda式と同等:
ここでobjはClassTypeタイプのオブジェクトである.関数インタフェース
例えば、int値を1つ保存し、2つの減数を減らす方法subtractがある.
もう1つのFuncインタフェースは、3つのIntパラメータを受け入れ、int値を返します.
Testでは方法がありますw
では、showは以下のように使用できます.
リファレンス構築方法
ClassName::new
Lamda式と等価
()->new ClassName()
関数インタフェース
interface F{
ClassName contructMethod();
}
静的メソッドの参照
ClassName::staticMethod
Lamda式と同等:
(a1,a2,...,an)->ClassName.staticMethod(a1,a2,...,an);
関数インタフェース
interface F{
ReturnType method(a1,a2,....,an);
}
参照オブジェクトのインスタンスメソッド
obj::method
Lamda式と同等:
(a1,a2,....,an)->obj.method(a1,a2,...,an)
関数インタフェース
interface F{
ReturnType method(a1,a2,....,an);
}
参照タイプオブジェクトのインスタンスメソッド(※)
ClassType::method
Lamda式と同等:
(obj,a1,a2,....,an)->obj.method(a1,a2,...,an)
ここでobjはClassTypeタイプのオブジェクトである.関数インタフェース
interface F{
ReturnType method(a1,a2,....,an);
}
例えば、int値を1つ保存し、2つの減数を減らす方法subtractがある.
class Int{
int value;
public Int(int value) {
this.value = value;
}
int subtract(Int other1,Int other2){
return value-other1.value-other2.value;
}
}
もう1つのFuncインタフェースは、3つのIntパラメータを受け入れ、int値を返します.
interface Func{
int action(Int a,Int b,Int c);
}
Testでは方法がありますw
public static void show(Int a,Int b,Int c,Func func){
System.out.print(func.action(a,b,c));
}
では、showは以下のように使用できます.
Int intA=new Int(1),intB=new Int(2),intC=new Int(3);
show(intA,intB,intC,/*Lamda */(Int a,Int b,Int c)->a.subtract(b,c));
show(intA,intB,intC,/* */Int::subtract);