2017-08-25 61 views
-3

切实最终代码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 

} 

之间的区别是有没有更详细的区别吗?

+0

你刚刚回答了你自己的问题。 – Moira

+0

effective final是一个变量,它在程序的整个执行过程中永远不会改变它的值,而final是明确指定带有final关键字的变量,告诉编译器不要改变 – HJK

回答

0

如果你的变量在声明后的影响(例如,任何时候你写的“B =‘123’),那么它是不是有效的决赛。

在内部类或嵌套类(如您的A类),你只能引用变量从外范围(如b),它们有效地最后。

的限制同样适用于从嵌套类衍生而来,例如lambda表达式构建体。

声明变量与“最终”关键字是一种方便的方式,以确保您的变量是有效的最终。

相关问题