我刚开始学习Java中的lambda函数。并且想知道这是否是创建“加法器”的正确方法。
public class Application {
public static void main(String[] args){
Function<Integer, Integer> fiveAdder = adder(5);
System.out.println(fiveAdder.apply(1)); //6
System.out.println(fiveAdder.apply(2)); //7
Function<Integer, Integer> tenAdder = adder(10);
System.out.println(tenAdder.apply(1)); //11
System.out.println(tenAdder.apply(2)); //12
System.out.println(fiveAdder.apply(1)); //6
System.out.println(fiveAdder.apply(2)); //7
}
public static Function<Integer, Integer> adder(Integer inc){
return num -> num + inc;
}
}
代码运行正常。但我不确定这是否是正确的做法,或者是否有更好的方法。就像函数部分num -> num + inc
使用inc
但不是最终/静态字段一样。 (另外IntelliJ高亮inc
对我而言让我怀疑......)
感谢您的帮助。
答案 0 :(得分:0)
IMO,您的代码非常好,但我无法想到您希望返回加法器的生产代码中的任何情况......
与功能部分num一样 - &gt; num + inc使用inc但不是某些final / static字段。
如果你制作了<dimen name="tab_max_width">XXXdp</dimen>
参数inc
,那么它并没有什么区别。它只是阻止您在方法中重新分配final
。谁会这样做? (除了醉酒的人和想要恶作剧的人......)
如果函数的返回值取决于变量静态字段,那确实很奇怪:
inc
像someStaticField = 5;
Function<Integer, Integer> adder1 = adder();
这样的函数应该是独立的。
Plus IntelliJ为我提供高亮度的照明,让我怀疑......
不,不是(对我来说):
它可能是其他内容,例如当您将鼠标悬停在某个变量上时所获得的突出显示,它会显示您使用该变量的所有其他位置。