我想在strust2的中添加代码,获得继承这个抽象类的子类的某些属性,现在使用反射方式可以得到子类的Field[],在Field[]中有我需要的属性,但怎样才能获得这个属性实际的对象呢?
app.model.FUserBondType子类中是属性的类型Field[] fields = this.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
  String fieldType = fields[i].getType().toString();
  log.debug(fieldType);  if(fieldType.equals("app.model.FUshouseLoanBondType") > 0){
    log.debug("name" + fields[i].getName());
    fields[i].setAccessible(true);
    Object c = fields[i].get(this);
    Field[] field = c.getClass().getDeclaredFields();
    
    for (int j = 0; j < field.length; j++) {
      log.debug("FUshouseLoanBondType.field.name" + field[j].getName());
      log.debug("FUshouseLoanBondType.field.type" + field[j].getType().toString());
    }
    
    Method[] ms = c.getClass().getMethods();
    for (int k = 0; k < field.length; k++) {
      log.debug("FUshouseLoanBondType.method" +  ms[k].getName());
    }
  }
}

解决方案 »

  1.   

    已经解决
    Field[] fields = this.getClass().getDeclaredFields();
    for (int i = 0; i < fields.length; i++) {
      String fieldType = fields[i].getType().toString();
      log.debug(fieldType);
      //匹配对象类型
      if(fieldType.indexOf("app.model.FUshouseLoanBondType") > 0){
        fields[i].setAccessible(true);
        Object object = fields[i].get(this);
        Map propertyMap = org.apache.commons.beanutils.BeanUtils.describe(object);
        Iterator it = propertyMap.entrySet().iterator();
        while (it.hasNext()) {
          Map.Entry entry = (Map.Entry) it.next();
          //获得属性名称
          String propertyName = String.valueOf(entry.getKey());
          //获得属性值
         String propertyValue = String.valueOf(entry.getValue());
        }     
      }
    }