我应该将Java 8 lambdas定义为静态最终常量吗?

时间:2015-09-07 09:47:39

标签: java lambda java-8

我有点从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(...);
}

是否对性能有任何影响,或者编译器是否足够聪明,根据具体情况做最好的事情?

0 个答案:

没有答案