在生活中我们开发不可避免的就是为对象赋予属性值的问题,如果你的属性名称一样只是后缀的数字的不一样那就可以用反射来减少重复代码的情况。
class对象中
getDeclaredMethod(”name”,String.calss); 返回method对象
第一个参数是方法的名称
第二个参数是方法的该方法的参数
第一种情况:在此当中当你这个方法没有参数的话可以省略
第二种情况:如果只有1个参数的话(例:String.calss)
第三种情况:多个参数(例:new Class[] {Integer.class,Integer.class,Double.class};)
invoke方法:
declaredMethod.invoke(queryParts,第二个参数表示传入此方法的值)
method对象点nvoke方法,表示当前方法的此方法被调用,参数则表示是哪个对象使用(注意点:当前方法的参数里的对象必须和映射出这方法的class对象一致否则抛出java.lang.IllegalArgumentException: object is not an instance of declaring class异常)
一般情况下列:Emp e=new Emp(); e.setName1("-----");。。。。。。
在项目开发的列子
//获取指定类的class对象
Class<CompGoods> cla=CompGoods.class;
for(int k=1;k<=9;k++) {
//获取指定方法
Method declaredMethod = cla.getDeclaredMethod("getPart"+k);
if(declaredMethod.invoke(queryParts)!=null) {
Method newMethod = clazz.getDeclaredMethod("setPart"+k,String.class);
newMethod.invoke(compGoods,declaredMethod.invoke(queryParts));
}
}