Nov*_*Guy 8 java lambda static-methods functional-programming java-8
我有一个关于lambda表达式的可重用性而没有代码重复的问题.例如,如果我有一个辅助方法,我可以很容易地将它编码为静态方法,并且可以从其他类中引用它而不需要代码重复.这怎么会在lambda表达式中起作用?示例:我编写了以下静态方法
public class MyUtil {
public static int doubleMe(int x) {
return x * 2;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在整个项目的多个位置重复使用相同的方法而无需代码重复
public class A {
public void someOtherCalculation() {
MyUtil.doubleMe(5);
}
}
public class B {
public void myCalculation() {
MyUtil.doubleMe(3);
}
}
Run Code Online (Sandbox Code Playgroud)
当涉及到lambda函数时,它如何工作,编写一次函数并在多个类中使用相同的函数.
Function<Integer, Integer> doubleFunction = x -> x * 2;
Run Code Online (Sandbox Code Playgroud)
在我的例子中,我将在哪里编写上面的lambda函数,以及如何在A类和B类中重用它?
我在哪里写上面的lambda函数
由于您的函数不引用任何字段,因此将其放在静态最终字段中是合适的:
class Utility {
public static final Function<Integer,Integer> doubleFunction = x -> x * 2;
}
Run Code Online (Sandbox Code Playgroud)
如何在A类和B类中重复使用它?
您可以将其称为Utility.doubleFunction,并在需要它的上下文中传递它:
callMethodWithLambda(Utility.doubleFunction);
Run Code Online (Sandbox Code Playgroud)
请注意,方法引用允许您定义一个函数,并将其用作lambda:
class Utility {
public static Integer doubleFunction(Integer x) {
return x*2;
}
}
...
callMethodWithLambda(Utility::doubleFunction);
Run Code Online (Sandbox Code Playgroud)
这种方法非常灵活,因为它允许您在多个上下文中重用相同的代码.
| 归档时间: |
|
| 查看次数: |
3952 次 |
| 最近记录: |