有效的最终代码
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
}
有更详细的区别吗?
答案 0 :(得分:0)
如果您的变量在声明后受到影响(例如,只要您写“b =”123“),那么它就不是最终的。
在内部类或嵌套类(例如您的类A)中,您只能引用外部作用域中的变量(例如b),这些变量实际上是最终的。
同样的限制适用于从嵌套类派生的构造,例如lambdas。
使用“final”关键字声明变量是确保变量有效最终的便捷方式。