在 Java 中初始化最终变量时出现问题
我不断遇到Java中问题的轻微变化,它开始向我袭来,我真的想不出一个合适的方法来解决这个问题。
我有一个对象属性,它是最终的,但动态的。也就是说,我希望值在分配后是常量,但每个运行时的值可以不同。所以我在类的开头声明类级变量 - 比如说。然后,在构造函数中,我给它分配一个值 - 比如说private final FILE_NAME;
FILE_NAME = buildFileName();
当我在引发异常的方法中有代码时,问题就开始了。所以我在构造函数中尝试了这样的东西:buildFileName()
try{
FILE_NAME = buildFileName();
}
catch(Exception e){
...
System.exit(1);
}
现在我有一个错误 - “空白的最终字段FILE_NAME可能尚未初始化。这就是我开始对Java的严格编译器感到有些恼火的地方。我知道这不会是一个问题,因为如果它到达捕获程序将退出...但是编译器不知道这一点,因此不允许使用此代码。如果我尝试向捕获添加虚拟分配,我会得到 - “FILE_NAME的最终字段可能已被分配。我显然无法在 try-catch 之前分配默认值,因为我只能分配一次。
任何想法...?