通过java反射实现静态变量替换
2014-11-24 08:40
447 查看
通过java反射我们要达到的目的是:在项目中调用某个共通类的静态变量,而在项目启动后,静态变量可以被数据库内容替换,实现动态加载,也就是以后要改静态变量,就直接改数据库对应的值就可以了,不需要修改代码。下面是实现原理代码。
通过上图可以看到public 的修饰符为1,static的修饰符值为8。所以9==f.getModifiers()这段代码的意思是查找修饰符为public static的静态变量。
public class reflectionTest { public static void main(String[] args) throws Exception { Object o=Constants.class.newInstance();//获取对象 Field f=Constants.class.getField("param1");//根据key获取参数 Field [] field=Constants.class.getFields();//获取全部参数 String str="20"; for(int i=0;i<field.length;i++){ f=field[i]; if(9==f.getModifiers()){//获取字段的修饰符,public 1,static 8 if(f.getType().getName().indexOf("int")!=-1){ f.set(o, Integer.valueOf(str)); }else if(f.getType().getName().indexOf("boolean")!=-1){ f.set(o, Boolean.valueOf(str)); }else{ f.set(o, str); } } } System.out.println(Constants.param1+","+Constants.param2+","+Constants.param3); } } class Constants{ public static int param1=15; public static String param2="参数2"; public static boolean param3=true; }代码中没有加入数据库替换的实现代码,但是原理是一样的。f.getModifiers()这个方法是获取方法变量修饰符,api显示如下图
通过上图可以看到public 的修饰符为1,static的修饰符值为8。所以9==f.getModifiers()这段代码的意思是查找修饰符为public static的静态变量。
相关文章推荐
- Java通过反射实现简单对象的拷贝
- java通过反射实现数据库的编写
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- java反射获取实体类的属性名和值通过POI导出EXCEl,并实现表格列宽度自适应
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 通过java反射实现对javabean生成各种sql语句
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 通过反射实现Java下的委托机制代码详解
- 如何理解java中的依赖注入 通过构造函数和反射机制来实现的
- JNI开发第二篇通过反射实现C中调用java代码,并实现Log打印日志
- java通过反射机制实现工厂设计模式
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 通过JAVA反射实现简单的ORM,将查询结果封装为对象
- Java通过反射实现实例化
- java通过反射调用实现类
- 通过java反射实现简单的关于MongoDB的对象关系映射(ORM).
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象
- 番外 01:Spring IoC 实现原理简析,Java的反射机制,通过类名创建对象