我想用Java从配置文件初始化一个静态最终变量。变量如下:
public static final String SCHEMA = "my_schema";
由于架构可以更改,因此我想从配置文件中读取它。但是,我必须使用final变量,因为JPA中没有其他方法可以使“表”注释中的“模式”属性初始化。关键是由于过去的选择,每个环境都位于具有不同模式名称的同一数据库中。
答案 0 :(得分:-1)
UPD -已编辑,以获得更好的解决方案
我能想到的唯一解决方法是,在具有最终变量的行之前,在之前添加另一个非最终私有String变量和一个静态初始化块。例如,以下代码在初始化后将产生不同的最终变量
public class TestSmth {
private static String yourCustomSchema;
static {
yourCustomSchema = Math.random() > 0.5 ? "my_schema" : "another_schema";
}
public static final String SCHEMA = yourCustomSchema;
public static void main(String[] args) {
System.out.println(SCHEMA);
}
}
您应该在静态块中实现配置文件加载
这样,在加载类后,您将初始化最终变量,并且无法访问非最终私有变量。