JPL 8:一种情况,有效的最终和最终之间的区别

时间:2017-08-25 09:23:56

标签: 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

}

有更详细的区别吗?

1 个答案:

答案 0 :(得分:0)

如果您的变量在声明后受到影响(例如,只要您写“b =”123“),那么它就不是最终的。

在内部类或嵌套类(例如您的类A)中,您只能引用外部作用域中的变量(例如b),这些变量实际上是最终的。

同样的限制适用于从嵌套类派生的构造,例如lambdas。

使用“final”关键字声明变量是确保变量有效最终的便捷方式。