是否可以在程序中的其他任何地方为最终变量赋值?还是在创建时给它们赋值是强制性的?
class TestClass() {
//this won't compile but is it possible to assign str a value anywhere else in the program?
public static final String str;
}
最佳答案
您需要在声明时分配一个值-如果不是静态的,则在构造函数中;如果是静态的,则在静态初始化器块中分配。设置该值后,将无法对其进行修改。
像这样做:
public class FinalTest {
private static final String CONSTANT;
private final String value;
static {
CONSTANT = "Hello";
}
public static void main(String [] args) {
FinalTest ft = ((args.length > 0) ? new FinalTest(args[0]) : new FinalTest(CONSTANT));
System.out.println(ft);
}
public FinalTest(String value) {
this.value = value;
}
public String toString() { return this.value; }
}
关于java - 在声明最终变量后是否需要立即给它们赋值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10308309/