Whi*_*cal 7 java variables final immutability
是否有可能final在任何特定时刻制作变量?我想决定它何时不可变,而不仅仅是第一次任务.
如果null不算作任务,这将是完美的.因此,如果您使用null初始化它,那么在某些代码之后,您仍然会有第一个赋值的通配符,而不一定在构造函数中.
一旦你分配一个final变量,你不能改变它的值,如规定在这里:
最终变量只能通过初始化程序或赋值语句初始化一次.它不需要在声明点初始化:这称为"空白最终"变量.
如果你想要一个在给定时间点可以变为不可变的变量,你可以做的是这样的:
...
private boolean isMutable;
private String someString;
public void setMutable(boolean value)
{
this.isMutable = value;
}
public void setSomeString(String value)
{
if (this.isMutable)
{
this.someString = value;
}
}
...
Run Code Online (Sandbox Code Playgroud)
你不能.你可以做的是用一个方法封装它:
public boolean setValue(int i)
{
if(isMutable)
{
value = i;
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
仅供您了解,该功能现已在草案中提出:http://openjdk.java.net/jeps/309。它被称为动态常数。检查未来的工作部分:
因此,该值是动态的,但由于其值仅设置一次,因此它也是恒定的。