最佳答案
final
关键字和变量来指定它的值是不被改变的。
但我看到你可以改变类的构造函数/方法的值。同样,如果变量是static
,那么它是一个编译错误
代码如下:
import java.util.ArrayList;
import java.util.List;
class Test {
private final List foo;
public Test()
{
foo = new ArrayList();
foo.add("foo"); // Modification-1
}
public static void main(String[] args)
{
Test t = new Test();
t.foo.add("bar"); // Modification-2
System.out.println("print - " + t.foo);
}
}
以上代码工作正常,没有错误。
现在将变量改为static
:
private static final List foo;
现在它是一个编译错误。这个final
是如何工作的?