我在 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)
如果我改为secrete
final,那么输出是:
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)