j**a invoke 反射的使用方法

时间:2017.09.04 发布人:echoyanyan2010

j**a invoke 反射的使用方法

已解决问题

谷歌echoyanyan2010用户在2017.09.04提交了关于“召唤万岁j**a invoke 反射的使用方法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-08-22T01:31:34。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,没有什么华丽的语言,但是我对你的感谢不会减少 !

希望以下的回答,能够帮助你。

第1个回答

用户名:ncnfvx  

你这个类是一个严格的J**aBean格式。。所以先可以获得属性。。然后获得读写方法。。然后写值。问答。读值。。hibernate其实也就是采用的这种差不多的方式。告固型希希引厂气女复。

importj**a.beans.PropertyDescriptor;
importj**a.lang.reflect.Field;
importj**a.lang.reflect.Method;

publicclassR茶盟势决eflectTest{

/**
*@paramargs
*/
publicstaticvoidmain(String[]args)throwsE饭械和夫于安思xception{
Cla参情供又茶ssclazz=Class.forName("TaskProvidePropsList");//这里的经类名是全名。。有让专然整联领富甲限包的话要加上包名
Objectobj=clazz.newInstance(帝和端德损铁江协);
Field[]fields=clazz.ge钟如义阻tDeclaredFields();
//写**
for(Fieldf:fields){
PropertyDescriptorpd讨评冷件找溶样房免便=newPropertyDescriptor(f.getName(),clazz);
MethodwM=pd.get东愿乡文可代球养械代WriteMethod();意命目集秋州政//获得写方法
wM.i轮房措代转岁福积nvoke(obj,2);//因为知道是int类型的属性,所以传个int过去就是了。。实际情况中需要判断下他的参数类型
}
//读**
for(Fieldf:fields){
Pro坏势pertyDescriptorpd=newPr打负没带语济opertyDescriptor(f.命京章雨他延getName(),clazz);
MethodrM=pd.getReadMethod();//获得读方法
Integer**m=(Integer)rM.invoke(obj);//因为知道是int类型的娘校考围问提属性,所以转换成intege最责济准布盐联粒冷r就是了。。也可以不转换直接打印
Syste扬轻输旧哥序富m.out.println(**m);
}
}

}