Java动态给类中配置常量赋值的三种⽅法
转载⾃blog.csdn/yyaf2013/article/details/17356813
当我们需要给Configuration类中的CONFIG常量第⼀次使⽤时动态指定⼀个值时,⽽此时我们⼜不想去修改源代码,那我们有三种⽅法去实现这种需求。
第⼀种:使⽤⼀个static静态代码块来指定,然后在静态代码块中,我们去动态读取外部的⼀个Properties⽂件的值。(最推荐)
import java.util.Properties;
/**
* 第⼀种实现⽅法
* @author William
*
*/
public class Configuration {
public static final String CONFIG;//常量声明时不马上初始化
static {
Properties properties = new Properties();
//把⼀个properties读进来
CONFIG = "Config";//通过properties的配置项config来初始化我们的常量config
}
}
第⼆种:我们可以配置Java的运⾏时配置,来指定⼀个-Dname=value的参数,这样也可以在类内部动态的接受到运⾏时指定的⼀个参数。
/**
* 第⼆种实现⽅法
* @author William
*
*/
public class Configuration {
public static final String CONFIG;//常量声明时不马上初始化
static {
CONFIG = Property("CONFIG");//通过系统的-D配置参数name=value形式来拿到这个配置值
//如果是eclipse,右键->RUN AS->Run Configurations->arguments->VMarguments ⾥输⼊(-DCONFIG=我们想要加⼊的配置)
}
public static void main(String[] args) {
System.out.println(Configuration.CONFIG);
}
}
第三种:我们还可以读的到系统配置的PATH或者CLASSPATH⾥⾯的值,同理,我们也可以配置⾃⼰的环境变量,然后在程序中⼀样也能读到这些配置的环境变量
/**
* 第三种实现⽅法
* @author William
*
java环境变量自动配置*/
public class Configuration {
public static final String CONFIG;//常量声明时不马上初始化
static {
CONFIG = v("PATH");//通过v()⽅法可以拿到系统环境变量,但我⾃⼰指定的环境变量没有取得成功,如果有知道原因的给我留⾔哈谢    }
public static void main(String[] args) {
System.out.println(Configuration.CONFIG);
}
}
v()⽅法,可以获得⾃⼰设定的系统变量,不过,在⾃⼰谁的设定过后⼀定要重启IDE⼯具,这样才能成功读取到。要不就
会只读到⼀个null。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。