【问题标题】:JPL 8:a situation,the difference between effectively final and final [duplicate]JPL 8:一种情况,有效最终和最终之间的区别[重复]
【发布时间】:2018-02-03 07:44:30
【问题描述】:

有效的最终代码

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

}

有更详细的区别吗?

【问题讨论】:

  • 你刚刚回答了自己的问题。
  • 实际上 final 是一个变量,在整个程序执行过程中你永远不会改变它的值,而 final 是用 final 关键字明确指定变量告诉编译器不要改变

标签: java final


【解决方案1】:

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

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

同样的限制适用于从嵌套类(例如 lambda)派生的构造。

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

【讨论】:

    猜你喜欢
    • 2014-01-23
    • 2020-05-11
    • 2014-09-14
    • 2013-03-02
    • 2021-01-11
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多