在运行时声明常量(Java)?

时间:2011-03-31 01:40:21

标签: java

嘿,伙计我有一个简单的问题。我正在读取文件并根据我从文件中读取的内容设置值。

我的问题是:如果我想从文件中声明一个检索到的值作为常量我将如何做?

编辑:为简单起见,请说该值为“int”。

3 个答案:

答案 0 :(得分:8)

我不认为您正在寻找final关键字?

final int foo = /* get it from the file */;

答案 1 :(得分:5)

不确定此变量的范围。就创建常量而言,“final”关键字是您必须使用的所有关键字。根据运行时数据定义最终的本地或实例变量很容易,但声明一个静态的最终类成员更难;在加载和初始化类时,你必须有值,所以你必须在静态初始化程序块中以某种方式执行它:

public static final int CONSTANT;
static {
    CONSTANT = <something!>;
}

答案 2 :(得分:2)

这是你可以做到的一种方法,只需用您的函数替换generatePseudoConstant()即可从文件系统中读取。

    public class PseudoConstant {

    public static final int PSEUDO_CONSTANT;
    private static final Random randomGen = new Random();

    static {
         PSEUDO_CONSTANT = generatePsudoConstant();
    }

    public static void main(String args[]) {
        PseudoConstant instance1 = new PseudoConstant();
        PseudoConstant instance2 = new PseudoConstant();

        System.out.println("PSEUDO_CONSTANT (instance1) = " + instance1.PSEUDO_CONSTANT);
        System.out.println("PSEUDO_CONSTANT (instance2) = " + instance2.PSEUDO_CONSTANT);
    }

    private static int generatePsudoConstant() {
        return randomGen.nextInt(10);
    }
}

干杯!