嘿家伙,我有一个快速的问题。我正在从文件中读取数据,并根据从文件中读取的数据设置值。在运行时声明常量(Java)?
我的问题是:如果我想从文件中声明一个检索值作为常量,我该怎么做?
编辑:为简单起见,说这个值是“int”。
嘿家伙,我有一个快速的问题。我正在从文件中读取数据,并根据从文件中读取的数据设置值。在运行时声明常量(Java)?
我的问题是:如果我想从文件中声明一个检索值作为常量,我该怎么做?
编辑:为简单起见,说这个值是“int”。
我不假设您正在寻找final
关键字?
final int foo = /* get it from the file */;
不确定你想要这个变量的范围。就最终创建常量而言,“最终”关键字就是您需要处理的所有内容。根据运行时数据定义最终的本地变量或实例变量是很容易的,但是声明静态最终类成员更困难;你必须有值可权当类被加载并初始化,所以你必须以某种方式做一个静态初始化块:
public static final int CONSTANT;
static {
CONSTANT = <something!>;
}
这里有一个方法,你可以做到这一点,只需更换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);
}
}
干杯!
是的,但每当我尝试声明它为:public static final int CONSTANT;我无法将其声明为空白。所以基本上我想要这个“公共静态最终int Constant_Int;”在另一个班级中,稍后再使用。 – thunderousNinja 2011-03-31 01:45:11
@Jonathan:没错。您必须在声明它们时初始化静态final字段,或者在[静态初始化程序块](http://download.oracle.com/javase/tutorial/java/javaOO/initial.html)中初始化。第二种选择可能是解决这个问题的方法。 – 2011-03-31 01:48:07
啊好吧,我看到静态初始化块是我的答案!谢谢! – thunderousNinja 2011-03-31 01:50:17