小编ami*_*ahu的帖子

Java 8 中的有效final 与final

我在 main 方法中执行如下:

int secrete = 42;
for (int i = 0; i < 5; i++) {
    Consumer<String> myprinter2 =
                    msg -> {
                        System.out.println("consuming " + msg + " ," + secrete);
                    };
     myprinter2.accept(myprinter2.toString());
}
Run Code Online (Sandbox Code Playgroud)

上述代码的输出是:

int secrete = 42;
for (int i = 0; i < 5; i++) {
    Consumer<String> myprinter2 =
                    msg -> {
                        System.out.println("consuming " + msg + " ," + secrete);
                    };
     myprinter2.accept(myprinter2.toString());
}
Run Code Online (Sandbox Code Playgroud)

如果我改为secretefinal,那么输出是:

consuming Main$$Lambda$1/1324119927@6d311334 ,42
consuming Main$$Lambda$1/1324119927@682a0b20 ,42
consuming Main$$Lambda$1/1324119927@3d075dc0 ,42 …
Run Code Online (Sandbox Code Playgroud)

java lambda jvm final

13
推荐指数
1
解决办法
394
查看次数

标签 统计

final ×1

java ×1

jvm ×1

lambda ×1