簡體   English   中英

是否可以從Java中的配置文件初始化靜態最終變量?

[英]Is it possible to initialize a static final variable from a configuration file in Java?

我想使用Java從配置文件初始化一個靜態最終變量。 該變量是這樣的:

public static final String SCHEMA = "my_schema";

由於架構可以更改,因此我想從配置文件中讀取它。 但是,我必須使用final變量,因為JPA中沒有其他方法可以使“表”注釋中的“模式”屬性初始化。 關鍵是由於過去的選擇,每個環境都位於具有不同模式名稱的同一數據庫中。

UPD-編輯以獲得更好的解決方案

我能想到的唯一解決方法是在最終變量所在的行之前有另一個非最終私有String變量和一個靜態init塊。 例如,以下代碼在初始化后將產生不同的最終變量

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);
    }
}

您應該在靜態塊中實現配置文件加載

這樣,在加載類之后,您將最終變量初始化,並且無法訪問非最終私有變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM