簡體   English   中英

在Java中設置全局變量

[英]Setting Global Variables in Java

這是我的問題:我有多個需要訪問特定值(例如電子郵件地址)的類,而不是在每個類中一次又一次地聲明它,我想一​​次聲明它並使用某種方式訪問​​它全局變量。

現在,在反對者開始尖叫(或對此文章投下反對票)之前,我知道您可以聲明一個這樣的類:

public class GlobalVar{

        public GlobalVar() throws Exception
    {

    }
    public static String email = "myemail@gmail.com";

 }

並使用GlobalVar.email在任何地方訪問email

我的問題是,電子郵件的值不能設置為靜態,因為它來自文本文件(來自使用Java properties class鍵/屬性),並且如果將變量設置為static,我仍然看不到從txt文件加載值。

我基本上是將動態生成的電子郵件存儲在文件中,並在下次啟動應用程序時檢索它。 當然,每次需要使用變量時,我都可以嘗試檢索它,但這不是很優雅。

更新:

提出了一種可能的解決方案,如下所示:

public static String email = null;
static {
    email = "awesome@email.com"; // change to your initialization process
}

我以為該解決方案會起作用,但是問題是,如果txt文件中不存在先前的值,則該值會在啟動時動態生成。 基本上,如果這是您第一次運行該應用程序,則會生成一個新值。 否則,將從txt文件(該程序在上一次運行時生成)中檢索該值。

如果我實施此解決方案,那么這是您首次運行該程序時,電子郵件的值將等於null(在整個程序中)。

我基本上需要一種使用條件語句來初始化靜態變量的方法,但是我不知道這是否可行。

謝謝

要初始化靜態變量,可以使用static (請參見static初始化塊 ):

public static String email = null;
static {
    email = "awesome@email.com"; // change to your initialization process
}

一種替代方法是使用靜態函數:

class Mail {
    public static String email = initializeMailVariable();

    private static String initializeMailVariable() {
        // initialization code goes here
    }
}

只需將您的GlobalVar類設置為具有getter和setter,當您從正在執行的加載方法中讀取文件時,請調用GlobalVar.setEmail("whatever") ,然后可以從任何位置使用GlobalVar.getEmail()

public class GlobalVar{

    private static String email = "";

    public static void setEmail(String email){
        this.email = email;
    }

    public static String getEmail(){
        return this.email;
    }
}

暫無
暫無

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

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