如何利用java的反射机制动态的取得对象的属性?
2011-03-25 00:00
846 查看
首先我们要先假设我们已经从前面把grid中的store数据项中的字段已经传递到后台中,这个就不用我在这里讲了吧?
前一篇文章我们已经说过这个问题了
这里所说的数据项即为dataIndex的值 ,这也是我们将来要进行反射的时候要用到的字段
先明确一下我们要做什么?
我们现在要做的就是把从数据库中查询出来的东西,我们这里用到的是hibernate,那么也就是说,我们查询出来的是一个一个的对象,然后利用get方法把对应的属性值拿到,再传递到前台的页面中。
那么,我们为什么要用到反射的机制呢?
想一下,如果在数据库中,这个对应的类中,有且不止这些个字段,会出现什么情况?
也就是说,从数据库中查询出的对象,你要把哪些个属性传递到前台?
这里是orgId,orgName……,但数据库中不仅仅是这些个字段,还有其它的字段,那么,我们采用反射的机制把要显示的出来,其它的列信息我们不用去管!!!
关键代码:
//连接数据库把符合条件的数据全部查询出来
List list = this.easySysOrgService.findAll();
Class classType = null; //初始化数据类型
Object invokeTest = null;
for(int i=0; i<list.size(); i++){
EasySysOrg eso = (EasySysOrg)list.get(i); //得到每一个对象
classType = eso.getClass(); //得到数据类型
invokeTest = classType.newInstance();
for(int k=0; k<str.length; k++){ //用前台传递的每一个dataIndex字段去和类的属性比较
String data = str[k]; //得到每一个字段值,如orgId,orgName……
//第一个参数为getXXX datasubString(0,1) 截取第一个字母,如orgId截取o再otUpperCase变成大写
Method method = classType.getMethod("get" + data.substring(0, 1).toUpperCase() + data.substring(1, data.length()), new Class[]{});
Object result = method.invoke(eso, new Object[]{});
System.out.println("method:____" + method);
}
}
运行的结果为:
前一篇文章我们已经说过这个问题了
这里所说的数据项即为dataIndex的值 ,这也是我们将来要进行反射的时候要用到的字段
先明确一下我们要做什么?
我们现在要做的就是把从数据库中查询出来的东西,我们这里用到的是hibernate,那么也就是说,我们查询出来的是一个一个的对象,然后利用get方法把对应的属性值拿到,再传递到前台的页面中。
那么,我们为什么要用到反射的机制呢?
想一下,如果在数据库中,这个对应的类中,有且不止这些个字段,会出现什么情况?
也就是说,从数据库中查询出的对象,你要把哪些个属性传递到前台?
这里是orgId,orgName……,但数据库中不仅仅是这些个字段,还有其它的字段,那么,我们采用反射的机制把要显示的出来,其它的列信息我们不用去管!!!
关键代码:
//连接数据库把符合条件的数据全部查询出来
List list = this.easySysOrgService.findAll();
Class classType = null; //初始化数据类型
Object invokeTest = null;
for(int i=0; i<list.size(); i++){
EasySysOrg eso = (EasySysOrg)list.get(i); //得到每一个对象
classType = eso.getClass(); //得到数据类型
invokeTest = classType.newInstance();
for(int k=0; k<str.length; k++){ //用前台传递的每一个dataIndex字段去和类的属性比较
String data = str[k]; //得到每一个字段值,如orgId,orgName……
//第一个参数为getXXX datasubString(0,1) 截取第一个字母,如orgId截取o再otUpperCase变成大写
Method method = classType.getMethod("get" + data.substring(0, 1).toUpperCase() + data.substring(1, data.length()), new Class[]{});
Object result = method.invoke(eso, new Object[]{});
System.out.println("method:____" + method);
}
}
运行的结果为:
相关文章推荐
- 利用反射机制动态获取对象属性名称及数据类型
- 利用反射机制动态获取对象属性名称及数据类型
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- Java通过反射机制动态设置对象属性值
- 如何在SpringMVC框架中利用Java反射机制和Javassist实现Java对象、属性、注解的动态创建生成
- Java记录 -88- 利用反射机制调用对象的私有方法和属性
- Java通过反射机制动态设置对象属性值的方法
- 反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212
- 如何利用反射机制另一个类中的private属性 | Java基础
- [Java]利用反射机制动态加载并创建包含参数的对象
- java 利用反射机制,获取实体所有属性和方法,并对属性赋值
- [java]反射机制给属性使用set方法构造对象
- Android 在Java代码中设置style属性--使用代码创建ProgressBar对象(反射机制)
- 如何利用Java的反射的机制来简化Structs应用程序的开发
- 利用java的反射机制调用类的私有方法及私有属性
- C# 利用反射机制动态构建配置文件中类的对象
- JAVA中利用反射机制进行对象和Map相互转换的方法
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- 利用Java反射根据属性名获取对象值和类型代码
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别