我指的是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/

10-10 19:24