j**ainvoke反射的使用方法

时间:2014.11.18 发布人:flying**yang

j**ainvoke反射的使用方法

已解决问题

谷歌flying**yang用户在2014.11.18提交了关于“古巴导危机j**ainvoke反射的使用方法”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-08-21T22:37:47。publicclassTaskProvidePropsList{

privateintprovide_id;
privateintprops_sign;
publicintgetProvide_id(){
returnprovide_id;
}
publicvoidsetProvide_id(intprovide_id){
this.provide_id=provide_id;
}
publicintgetProps_sign(){
returnprops_sign;
}
publicvoidsetProps_sign(intprops_sign){
this.props_sign=props_sign;
}
}

这是个很简单的实体。我现在想请教高手帮忙写一个invoke的实例,就是调用所有的set方法,进行赋值,然后通过所有的get方法取值,打印出值来。就要这样一个例子。分不够可以加。希望大家能够帮助她。

详细问题描述及疑问:publicclassTaskProvidePropsList{

privateintprovide_id;
privateintprops_sign;
publicintgetProvide_id(){
returnprovide_id;
}
publicvoidsetProvide_id(intprovide_id){
this.provide_id=provide_id;
}
publicintgetProps_sign(){
returnprops_sign;
}
publicvoidsetProps_sign(intprops_sign){
this.props_sign=props_sign;
}
}

这是个很简单的实体。我现在想请教高手帮忙写一个invoke的实例,就是调用所有的set方法,进行赋值,然后通过所有的get方法取值,打印出值来。就要这样一个例子。分不够可以加。期待您的答案,感谢你,我会记得你对我的好的 !

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

第1个回答

用户名:BqyuhZOfF财鱼不概左包话N  

你这个类是一个严格的J**a始希微根呼宗Bean格式。。所以先可以获得属性。。然后获得读写方法。。然后写值。。读值。。hibernate其实也就是采用的这种差不多的方式。。

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

publicclassReflectTe妒抓江迅点st{

/**
*@paramargs
*/
publicstaticvoid片态紧背操议main(String[]args)throwsException{
Clas造sclazz=Class.来自forName("TaskProvidePr取鸡企兰氢即每示规尔opsList");//这里的类名是全名。。有包的话要加上包名
Objectobj=问答clazz.newInstance();
Field[]fields=clazz.getDeclaredFields();
//写**
for(Fieldf:fields){
PropertyDescripto多格农父妒解植雷大rpd=newPropertyDescriptor(f.getName(),clazz);
MethodwM=pd.getWriteMet止友践居布措准重析决hod();//获得写方法
wM.invoke(obj,2);//因为知道是int类型的属性,所以传个int过去就是了。。实际情况中需要判断下他的参数类型
}
//读**
for(Fieldf:fields){
艺积磁促PropertyDescriptorpd=newPropertyDescriptor(f.get载见失聚误黄赵Name(),clazz);
M绝财ethodrM=pd.getReadMethod();//获得读方法
Integer**m=(Integer)rM.invoke(obj);//因为知道是int类型的属性,所以转换成integer就是了。。也可以不转换直接打印
System.out格千脱于乐达定非刚企.println(**m);
}
}

}