正如標題所說,我正在尋找使用lambda表達式來實現一些非常簡短的方法,這一切都不爲人所知。使用lambdas作爲Java中的類的方法
Python可以做到這一點,C#可以做到這一點,在某種程度上我相信即使是C++現在也可以做到。
但我試圖做一個Java類沒有成功的相同,我查了一切可能回答這個問題,沒有運氣。我寧願不使用100個函數接口來集羣我的應用程序,只是爲了能夠使用lambda表達式來處理更加微不足道的函數或方法,因爲那樣會挫敗編寫更少代碼的目的。
這是我曾嘗試(很顯然,他們沒有工作,第二個差點因爲它至少承認這樣一個事實:拉姆達在那裏:
import static java.lang.Math.*;
class Main {
static double log = (double val, double base) -> Math.log(val)/Math.log(base); // First try. Python way.
static double log = (val, base) -> Math.log(val)/Math.log(base); // Second try. Also inspired from the
// Python way, somewhat similarly to the
// F# or haskell way.
static double log(double val, double base) -> Math.log(val)/Math.log(base); // Third try. The C# way.
public static void main(String[] argv){
System.out.println(log(8,2));
}
}
你明白了。只需將它們作爲靜態方法實現,並且當您有例如需要DoubleBinaryOperator作爲參數的API時,可以傳遞Main :: log作爲參數。 –