我指的是Cay S. Horstmann的书,并且遇到了lambda表达式。
Lambda表达式可以捕获封闭范围内的变量的值,但只能引用其值不变的变量。
考虑到这一点,我对在lambda表达式中使用this
引用感到困惑。让我感到困惑的是,当我们在非this
方法中的lambda表达式中使用static
引用时,是否可以对this
引用的对象进行突变?
最佳答案
如果这就是您要谈论的内容,则可以将它们全部更改,因为a
不是局部变量。本示例使用Function
。
public class MutatingTest {
int a = 0;
public static void main(String[] args) {
new FinalTest().start();
}
public void start() {
Function<Integer,Integer> app = b->b + this.a++;
int v = app.apply(10);
System.out.println(v);
v = app.apply(10);
System.out.println(v);
v = app.apply(10);
System.out.println(v);
v = app.apply(10);
System.out.println(v);
}
}
版画
10
11
12
13
关于java - 我们可以在lambda表达式中更改此引用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60907636/