简单实体类 Task
public class Task{
private int a;
private int b;
get。。。。set。。。。
}
下面 写一个invoke的实例,就是调用所有的set方法,进行赋值,然后通过所有的get方法取值,打印出值来。
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTask{
public static void main (String args[]){
Class cla = Class.forName("Task"); //这里的类名是全名,如果有包的话,包的路径也写上。
Object obj = cal.newInstance();
Field [] fields = cla.getDeclaredFields;
//写数据
for(Field f:fields){
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), cla);
Method wM = pd.getWriteMethod();//获得写方法
wM.invoke(obj, 2);//因为知道是int类型的属性,所以传个int过去就是了。。实际情况中需要判断下他的参数类型
}
//读数据
for(Field f : fields) {
PropertyDescriptor pd = new PropertyDescriptor(f.getName(), cla);
Method rM = pd.getReadMethod();//获得读方法
Integer num = (Integer) rM.invoke(obj);//因为知道是int类型的属性,所以转换成integer就是了。。也可以不转换直接打印
System.out.println(num);
}
}
}