正如标题所说,我正在寻找使用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作为参数。 –