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。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值