Java動態給類中配置常量賦值的三種方法

轉載自http://blog.csdn.net/yyaf2013/article/details/17356813 

當我們需要給Configuration類中的CONFIG常量第一次使用時動態指定一個值時,而此時我們又不想去修改源代碼,那我們有三種方法去實現這種需求。 

第一種:使用一個static靜態代碼塊來指定,然後在靜態代碼塊中,我們去動態讀取外部的一個Properties文件的值。(最推薦) 

Java代碼  收藏代碼

  1. import java.util.Properties;    

  2.     

  3.     

  4. /**  

  5.  * 第一種實現方法  

  6.  * @author William  

  7.  *  

  8.  */    

  9. public class Configuration {    

  10.     

  11.     public static final String CONFIG;//常量聲明時不馬上初始化    

  12.         

  13.     static {    

  14.         Properties properties = new Properties();    

  15.         //把一個properties讀進來    

  16.         CONFIG = "properties.getConfig";//通過properties的配置項config來初始化我們的常量config    

  17.     }    

  18. }   



第二種:我們可以配置Java的運行時配置,來指定一個-Dname=value的參數,這樣也可以在類內部動態的接受到運行時指定的一個參數。 

Java代碼  收藏代碼

  1. /**  

  2.  * 第二種實現方法  

  3.  * @author William  

  4.  *  

  5.  */    

  6. public class Configuration {    

  7.     

  8.     public static final String CONFIG;//常量聲明時不馬上初始化    

  9.         

  10.     static {    

  11.         CONFIG = System.getProperty("CONFIG");//通過系統的-D配置參數name=value形式來拿到這個配置值    

  12.         //如果是eclipse,右鍵->RUN AS->Run Configurations->arguments->VMarguments 裏輸入(-DCONFIG=我們想要加入的配置)    

  13.     }    

  14.         

  15.     public static void main(String[] args) {    

  16.         System.out.println(Configuration.CONFIG);    

  17.     }    

  18. }    


第三種:我們還可以讀的到系統配置的PATH或者CLASSPATH裏面的值,同理,我們也可以配置自己的環境變量,然後在程序中一樣也能讀到這些配置的環境變量 

Java代碼  收藏代碼

  1. /**  

  2.  * 第三種實現方法  

  3.  * @author William  

  4.  *  

  5.  */    

  6. public class Configuration {    

  7.     

  8.     public static final String CONFIG;//常量聲明時不馬上初始化    

  9.         

  10.     static {    

  11.         CONFIG = System.getenv("PATH");//通過System.getenv()方法可以拿到系統環境變量,但我自己指定的環境變量沒有取得成功,如果有知道原因的給我留言哈謝謝    

  12.             

  13.     }    

  14.         

  15.     public static void main(String[] args) {    

  16.         System.out.println(Configuration.CONFIG);    

  17.     }    

  18. }    


PS.System.getenv()方法,可以獲得自己設定的系統變量,不過,在自己誰的設定過後一定要重啓IDE工具,這樣才能成功讀取到。要不就會只讀到一個null。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章