如何让全局常量通过外部文件properties来加载

如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。
 
 
       通常我们会在项目中写很多常量,供整个系统使用,一般来说,我们写在一个interface或者final class里面,然后在里面定义一些final static常量。一般的小系统,这样的常量不会太多,我们简单地写在类里面就可以了。但是在大项目中,第一可能会有很多的常量,第二常量的修改可能不是程序员干的,而是系统策划或者需求分析的人做的,他们可能不懂怎么写java类,这时候再让程序员把他们写的东西重新写一遍到系统中就会非常麻烦。
        所以我们还是需要配置文件properties的帮忙,其实换成其他文件也可以,不过稍微麻烦一点,配置文件可能更简单一点。 
       我想过两种方法,一种写一个插件,读取配置文件的内容然后重新生成一个新的Java类,缺点是比较麻烦,每次都要刷新后重新编译。
       还有一种就是想办法让定义常量类的数据直接从配置文件中获取。这个稍微有点麻烦,首先interface不支持写构造函数或者静态块。那么只能写一个普通类来完成。可以在前面加上final修饰词来修饰这个类,但是静态变量就不能加final了。而且应该不添加值,等待static块来给它加载。具体写法如下:
public final class Consts {
	// 冷却时间毫秒计时
	public static int ENHANCE_COOL;  // 1分钟
	public static int SKILL_COOL;    // 1小时
	public static int PLANT_COOL;    // 8小时

	static {
		System.out.println("static块加载数据");
		Properties property = new Properties();
		try {
			property.load(new FileInputStream(Declarations.SOURCE_PATH));
			ENHANCE_COOL = Integer.parseInt(property.getProperty("ENHANCE_COOL").trim());
			SKILL_COOL = Integer.parseInt(property.getProperty("SKILL_COOL").trim());
			PLANT_COOL = Integer.parseInt(property.getProperty("PLANT_COOL").trim());	
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值