读书人

得瑟一上jdk源代码解析怎么在运行时

发布时间: 2013-02-19 11:11:40 作者: rapoo

得瑟一下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();}}}}


读书人网 >编程

热点推荐