gpt4 book ai didi

java - 如何将交换参数的 lambda 转换为方法

转载 作者:行者123 更新时间:2023-11-30 01:47:54 25 4
gpt4 key购买 nike

我试图了解 lambda 是如何工作的。在这个过程中我发现了这个例子。

public class Calculator {
interface IntegerMath {
int operation(int a, int b);

default IntegerMath swap() {
return (a, b) -> operation(b, a);
}
}

private static int apply(int a, int b, IntegerMath op) {
return op.operation(a, b);
}

public static void main(String[] args) {
IntegerMath addition = (a, b) -> a + b;
Math subtraction = (a, b) -> a - b;

System.out.println(apply(5, 10, subtraction));
System.out.println(apply(5, 10, subtraction.swap()));
}
}

我正在尝试将交换方法实现从 lambda 转换为普通方法。

但我无法改变这一点,因为如果我这样做了,我应该编写操作方法的实现并创建一个无限递归。

public class Calculator {
interface IntegerMath {
int operation(int a, int b);

default IntegerMath swap() {
return new IntegerMath() {
@Override
public int operation(int a, int b) {
return operation(b, a);
}
};
}
}
}

我可以不在接口(interface) IntegerMath 的 swap 方法中使用 lambda 吗?

最佳答案

如果您询问如何从匿名实现中调用外部 operation(),您可以这样做:

return IntegerMath.this.operation(b, a);

关于java - 如何将交换参数的 lambda 转换为方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57259328/

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