JPL 8:一种情况,有效,决赛
问题描述:
切实最终代码JPL 8:一种情况,有效,决赛
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),它们有效地最后。
的限制同样适用于从嵌套类衍生而来,例如lambda表达式构建体。
声明变量与“最终”关键字是一种方便的方式,以确保您的变量是有效的最终。
你刚刚回答了你自己的问题。 – Moira
effective final是一个变量,它在程序的整个执行过程中永远不会改变它的值,而final是明确指定带有final关键字的变量,告诉编译器不要改变 – HJK