JAVA反射 根据不同的属性类型进行赋值 获取以字符串为参数的构造函数

直接上代码

//项目开始大量使用发射机制
 
//从客户系统获取联系人信息
String xmlStr = HttpUtil.doGet("http://xxxxxxx/api/listContact.action?clientid=1", null, "utf-8");
Document document = null;
List<Contact> contactList = new ArrayList<Contact>();
try {
  //通过dom4j解析xml字符串为dom文档
  document= DocumentHelper.parseText(xmlStr);
  //从document中解析Contact联系人
  Element rootElt = document.getRootElement();
  //如果联系人记录数大于0
  if(Integer.parseInt(rootElt.elementTextTrim("count"))>0){
    Element contactsElt = (Element) rootElt.elementIterator("contacts").next();
    Iterator<Element> iterator = contactsElt.elementIterator("contact");
    int i=0;
    while(iterator.hasNext()){
    Element contactElt = iterator.next();
    Field[] properties = Contact.class.getDeclaredFields();
    Contact contact = Contact.class.newInstance();
    for(Field property:properties){
      String pname = property.getName();
      property.setAccessible(true);
      PropertyDescriptor pd = new PropertyDescriptor(pname, Contact.class);
      Method writeMethod = pd.getWriteMethod();
      //获取属性的类型
      Class clazz=property.getType();
     //获取该类型以字符串为参的构造函数
     String pvalue = contactElt.elementTextTrim(pname);
     if(pvalue != null){
        Constructor constructor = clazz.getConstructor(String.class);
        writeMethod.invoke(contact,constructor.newInstance(pvalue));
     }
  }
  contactList.add(contact);
 
}
} catch (Exception e) {
  e.printStackTrace();
}

本文出自 全栈笔记 版权所有,你可以在保留原文地址:JAVA反射 根据不同的属性类型进行赋值 获取以字符串为参数的构造函数 及作者的情况下到你的网站或博客。

【上一篇】
【下一篇】

您可能感兴趣的文章:

发表评论

您必须 登录 后才能发表评论。