首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

得瑟一上jdk源代码解析,怎么在运行时修改java final变量

2013-02-19 
得瑟一下jdk源代码解析,如何在运行时修改java final变量先让各位看官看看sun的jdk Field类的代码,protecte

得瑟一下jdk源代码解析,如何在运行时修改java final变量

先让各位看官看看sun的jdk Field类的代码,

protected void load_conf() {// copy all right , barenx@163.com, 2011String file = this.getClass().getName() + ".conf";//file = this.getClass().getClassLoader().getResource(file).getFile();final Properties conf = new Properties();try {conf.load(new FileInputStream(file));} catch (final Exception e) {e.printStackTrace();return;}for (final Field field : this.getClass().getDeclaredFields()) {if ((field.getType() == String.class)) {final String fname = field.getName();final String fvalue = conf.getProperty(fname);if ((null == fvalue) || (0 == fvalue.length())) {continue;}try {field.setAccessible(true);final Field modifiersField = Field.class.getDeclaredField("modifiers");modifiersField.setAccessible(true);modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);field.set(this, fvalue);modifiersField.setInt(field, field.getModifiers() | Modifier.FINAL);modifiersField.setAccessible(false);field.setAccessible(false);} catch (final Exception e) {e.printStackTrace();}}}}


热点排行