假设我有这样的代码
@FunctionalInterface
interface Callable {
Integer multiply(Integer by);
}
class Builder {
private Integer multiplier;
public Builder multiplyBy(Integer multiplier) {
this.multiplier= multiplier;
return this;
}
public Callable build() {
return (value) -> value * multiplier; //how to "bake" hever value
}
}
// calling
Builder builder;
Callable multiplierBy3 = builder.multiplyBy(3);
Callable multiplierBy6 = builder.multiply(6);
multiplierBy3.multiply(10); //should return 30, returns 60
multiplierBy6.multiply(10); // return 60, ok, propably because of new multipier value
之所以发生这种行为,是因为第二次调用multiplyBy
会在Builder中设置新的value
.
我如何才能创建每个lambda自己的乘数函数?