gpt4 book ai didi

java - 如何解决 Java 方法引用歧义

转载 作者:行者123 更新时间:2023-11-29 04:21:57 25 4
gpt4 key购买 nike

有没有办法让编译器选择静态方法引用?

此代码无法编译,因为有两个方法满足此方法引用。有没有办法提示或转换它以解析静态方法引用?

public class Number {
private final int value;

public Number(int value) {
this.value = value;
}

public Number add(int x) {
return operate(Number::add, x); // <---- compile fail here at Number::add
}

private Number operate(BiFunction<Number, Integer, Number> function, int x) {
return function.apply(this, x);
}

public static Number add(Number x, int y) {
return new Number(x.value + y);
}

}

最佳答案

没有“碰撞”:)

问题是 Number::add 不明确(编译器 - 至少在 eclipse 中 - 报告正确)。

模棱两可的代码:

BiFunction<Number, Integer, Number> m = Number::add;

可能意味着:

BiFunction<Number, Integer, Number> m = (x,y) -> Number.add(x,y);

或:

BiFunction<Number, Integer, Number> m = (x,y) -> x.add(y);

关于java - 如何解决 Java 方法引用歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48566450/

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