如何让全局常量通过外部文件properties来加载
2012-09-03 18:59
274 查看
如果你需要通过计算来初始化你的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(); } } }
相关文章推荐
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
- JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
- <util:properties/>加载的配置文件中有中文导致乱码,如何通过分析源码解决问题?
- 多个cpp文件如何定义全局变量与常量
- 如何最快的加载外部JavaScript文件
- 通过ajax加载外部json文件,并实现加载照片
- 如何通过外部csv文件编辑产品的价格?
- 如何在web.xml中加载外部多个xml文件
- VS2008 VC 如何把图片等资源文件通过本地路径加载方式加载
- spring 如何动态加载properties文件的内容
- applicationContext.xml文件如何调用外部properties等配置文件
- 如何通过AppDomain用特定的安全上下文加载外部程序集
- 如何使用java类来加载properties配置文件的属性信息
- YII 如何在当前页面外部加载css,img,js文件
- spring 加载配置文件application.properties,类里如何调用@Value的解决办法
- 通过XMLHttpRequest加载外部图片文件或数据
- applicationContext.xml文件如何调用外部properties等配置文件