使用Java反射功能

   最近项目中需要用到JMeter进行性能测试,在测试过程中需要创建一些测试数据,但是在我们项目中的接口参数类型大多数都是些对象类型的,而从JMeter的控制面板是不能直接传入对象类型的参数,只能传入字符类型的参数,然后我们在后台得到参数内容根据实际需要进行提取,我们一般都是通过JMeter提供的CSV Data Set Config读取写入到文件中的测试数据,进行处理后再构造成对象,这样处理起来是相当的麻烦,所以想通过反射技术来设置JavaBean属性,这样可能方便不少。

 

   有段时间没有用到Java反射了,都忘了一些东西,先写个小例子测试一下,

 

public class TestReflect {
   /**
      *   。
    * @author 刘尧兴
    * @param args
     */
   public static void main(String[] args) {
      String[] fields = { "id", "name" };
      String[] values = { "123456", "liuyaoxing" };
      Student student = new Student();
      for(int i=0;i<fields.length;i++) {
         setValue(student, fields[i], values[i]);
      }
      System.out.println("ID: "+student.id+"  "+"Name: "+student.name);
    }

    public static Object setValue(Object obj,String fieldName, String fieldValue) {
       Class clazz = obj.getClass();
       Field field;
       try {
          field = clazz.getDeclaredField(fieldName);
          field.setAccessible(true);
          field.set(obj, fieldValue);
        }catch (Exception e) {
          e.printStackTrace();
        }
        return obj;
    }

    public static class Student {
       private String id;
       public String name;
    
       public String getId() {
          return id;
       }
       public void setId(String id) {
           this.id = id;
       }
    }
}

 

 

 

   这个例子通过反射赋值给指定的字段,而且Id字段的访问类型为私有的,我们可以通过field.setAccessible(true);这段代码跳过访问权限的验证,打印的结果为:

ID: 123456  Name: liuyaoxing

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值