Java JPL8:一种情况,有效最终和最终的区别

Java JPL8:一种情况,有效最终和最终的区别,java,final,Java,Final,有效的最终代码 public void say() { String b = "222"; // effectively final b class A { public A(String c) { b = "123"; // error } } b = "123"; // success; if b is final, it is an error } 是否存在更详细的差异?如果变量在声明后受

有效的最终代码

public void say() {

    String b = "222"; // effectively final b

    class A {

        public A(String c) {
            b = "123"; // error
        }

    }

    b = "123"; // success; if b is final, it is an error

}

是否存在更详细的差异?

如果变量在声明后受到影响(例如,任何时候写入“b=”123”),则它实际上不是最终变量

在内部类或嵌套类(如类A)中,只能引用外部作用域(如b)中的有效最终变量

同样的限制也适用于从嵌套类(如lambdas)派生的构造


声明一个带有“final”的变量“关键字是确保变量有效为final的一种方便方法。

您刚刚回答了自己的问题。有效final是一个在整个程序执行过程中从不更改其值的变量,而final是用final关键字明确指定变量,告诉编译器不要更改