利用反射来减少代码对对象属性的赋值问题

在生活中我们开发不可避免的就是为对象赋予属性值的问题,如果你的属性名称一样只是后缀的数字的不一样那就可以用反射来减少重复代码的情况。

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));
            }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值