是否可以在程序中的其他任何地方为最终变量赋值?还是在创建时给它们赋值是强制性的?

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/

10-09 06:15