gho*_*der -2 java lambda anonymous-class java-8
在查看 lambda 表达式时,我发现了匿名内部类和 lambda 表达式的以下行为。这背后的原因可能是什么?
Human h = new Human() {
int a = 2;
@Override
public void sing() {
System.out.println(++a);
}
};
h.sing();
h.sing();
Run Code Online (Sandbox Code Playgroud)
输出/输出
3
4
Run Code Online (Sandbox Code Playgroud)
而对于 lambda,我得到以下结果:
Human h = () -> {
int a = 2;
System.out.println(++a);
};
h.sing();
h.sing();
}
Run Code Online (Sandbox Code Playgroud)
输出/输出
3
3
Run Code Online (Sandbox Code Playgroud)
你的 lambda 或多或少相当于:
Human h = new Human() {
@Override
public void sing() {
int a = 2;
System.out.println(++a);
}
};
h.sing();
h.sing();
Run Code Online (Sandbox Code Playgroud)
无法声明具有直接可变状态的 lambda。
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |