[英]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.