java反射机制获取成员变量调用和调用实例方法的实现
来源:互联网 发布:俄罗斯新纳粹 知乎 编辑:程序博客网 时间:2024/05/22 13:58
昨晚对Java反射机制感兴趣,写了下面代码,包括反射机制里的通过实例获得类名、用构造子构造函数、获取类的成员变量等。也描述了构造javabean的set和get方法,以及通过反射机制去调用实例地方法,主要实现见如下代码,有详细注释,代码说明:一、二部分代码必须要有
一、实现java反射机制类
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.TypeVariable;
public class BeanUtil {
public void getFile(Object dto) {
Class dtoClass = dto.getClass();//通过实例获得类名
Constructor[] cons = dtoClass.getConstructors();//获得构造子,用于实例化对象
Field[] field = dtoClass.getDeclaredFields();//获取字段名称,存放到数组
Object [] arg={3,"赵继彬","20","男","男"};
Class[] ddd = new Class[arg.length];//构造Class数组,用于存放参数类型
try {
for (int j = 0; j < cons.length; j++) {
Method method;
Object ob = cons[j].newInstance(null);//构造实例相当于new Object()
for (int i = 0; i < field.length; i++) {//根据字段数组的长度,构造set方法
String stt = field[i].getName();
String fisrt = stt.substring(0, 1);//取第一个字母
String upFisrt = fisrt.toUpperCase();//将第一个字母转换为大写
String seter = "set" + upFisrt + stt.substring(1);//合成set方法
ddd[i] = arg[i].getClass();//指定调用方法的类型
method = dtoClass.getMethod(seter, ddd[i]);//通过方法名获取dtoClass的方法,参数类型为ddd[i]的类型
method.invoke(ob, arg[i]);//通过dtoClass的实例调用seter方法,arg[i]为参数值
System.out.println(seter);
}
for (int i = 0; i < field.length; i++) {
String stt = field[i].getName();
String fisrt = stt.substring(0, 1);
String upFisrt = fisrt.toUpperCase();
String geter = "get" + upFisrt + stt.substring(1);
method = dtoClass.getMethod(geter,null);
System.out.println(stt+"=="+method.invoke(ob, null));
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] a) {
BeanUtil bu = new BeanUtil();
BeanDto dto = new BeanDto();
bu.getFile(dto);
}
}
二、实体bean也是我们要用反射机制获取的对象
public class BeanDto {
private Integer id;
private String name;
private String age;
private String sex;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
- java反射机制获取成员变量调用和调用实例方法的实现
- Java反射机制获取/调用类的属性和方法
- 通过Java反射机制获取对象、方法和成员变量
- java利用反射来调用一个类的私有方法和成员变量
- 反射(四)使用反射机制调用对象的私有方法及成员变量
- Java反射机制调用源类的方法实例
- java反射机制方法的获取与调用
- Java父、子类成员变量和方法的调用关系
- java中多态父类的成员变量和方法调用问题
- 利用java反射机制实现自动调用类的方法
- 反射调用成员变量
- 反射机制的概述和字节码对象的获取,通过反射获取构造方法并使用;通过反射获取成员变量并使用;通过反射获取私有成员变量并使用;通过反射获取成员方法并使用
- java 使用反射机制来获取私有方法和成员变量
- 【类反射】类的调用(调用类中的成员:成员变量、方法、构造方法)
- 反射机制调用普通成员方法
- java 反射机制的几个调用方法
- 反射机制实现方法调用
- 具体的一个实例,展示如何访问实例变量和调用成员方法
- C#中一个不常用的特殊运算符——"??"
- 打造完美的xml技术解决方案件(dom4j/xstream)
- mapguide studio破解
- XML::XML XLS之XLST三
- 构建和实现单点登录解决方案
- java反射机制获取成员变量调用和调用实例方法的实现
- An Overview on Common JVM Level Problems in Java SE Application
- 如何通过HtmlInputFile控件上传文件的类
- 用javascript打开模态页面并得到返回值
- GC(Garbage collection) Log and Analysis
- PHP 集成环境之 WampServer2.0
- (转载)CreateRemoteThread (代码注入)
- winform menustrip的遍历
- 指针和堆的内存分配&指针数组和数组指针(转)