gpt4 book ai didi

java - lambda 表达式与静态方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:45 24 4
gpt4 key购买 nike

我对没有代码重复的 lambda 表达式的可重用性有疑问。例如,如果我有一个辅助方法,我可以轻松地将它编码为静态方法,并且可以从其他类引用它而无需代码重复。这在 lambda 表达式中如何工作?示例:我编写了以下静态方法

public class MyUtil {

public static int doubleMe(int x) {
return x * 2;
}
}

我可以在项目的多个地方重用相同的方法而无需重复代码

public class A {

public void someOtherCalculation() {
MyUtil.doubleMe(5);
}
}

public class B {

public void myCalculation() {
MyUtil.doubleMe(3);
}
}

当涉及到 lambda 函数时,它是如何工作的,编写一次函数并在多个类中使用它。

Function<Integer, Integer> doubleFunction = x -> x * 2;

在我的示例中,我应该在哪里编写上面的 lambda 函数以及我将如何在 A 类和 B 类中重用相同的函数?

最佳答案

Where would I write the above lambda function

由于您的函数不引用任何字段,因此将其放在静态最终字段中是合适的:

class Utility {
public static final Function<Integer,Integer> doubleFunction = x -> x * 2;
}

how would I reuse the same in class A and B?

您可以将其称为 Utility.doubleFunction,并将其传递到需要它的上下文中:

callMethodWithLambda(Utility.doubleFunction);

请注意,方法引用让您可以定义一个函数,并像使用 lambda 一样使用它:

class Utility {
public static Integer doubleFunction(Integer x) {
return x*2;
}
}
...
callMethodWithLambda(Utility::doubleFunction);

这种方法非常灵活,因为它可以让您在您认为合适的多个上下文中重用相同的代码。

关于java - lambda 表达式与静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44247538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com