我有点从Java 8开始,我想知道一些最佳实践。 我真的很喜欢我如何编写内联lambda,但这是如何在后台工作的?
我有两个案例:
使用需要范围内值的lambda:
private int x;
void doIt(Stream<Integer> stream) {
stream.map(i -> i * x).forEach(...);
}
使用一个完整的lambda:
void doIt(Stream<Integer> stream) {
stream.map(i -> i * i).forEach(...);
}
在最新的情况下,我实际上可以将lambda声明为常量:
private static final Function<Integer, Integer> squaring = i -> i * i;
void doIt(Stream<Integer> stream) {
stream.map(squaring).forEach(...);
}
是否对性能有任何影响,或者编译器是否足够聪明,根据具体情况做最好的事情?