论坛首页 Java企业应用论坛

如何获得pojo中嵌套属性的类型

浏览 7774 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-04   最后修改:2012-05-04
Class fieldClass=Class.forName(className).getField(fieldName).getType();

就可以得到className这个类中fieldName这个属性的类型。

如Class fieldClass=Class.forName("testPackage.Dept").getField("deptName").getType();
表示Dept.java中deptName的属性类型,其结果一定是java.lang.String



对于你那种有.的,比如dept.deptName或者user.car.factory.name这种,嵌套求解就可以了。


public Class getFieldType(Class objectClass,String fieldEl){
   //将a.b.c.d分解成a和b.c.d
   int index=fieldEl.indexOf(".");
   String headEl=fieldEl,tailEl=null;
   if(index>=0){
          headEl=fieldEl.subString(0,index);
          tailEl=fieldEl.subString(index);
   }
   //在当前objectClass中计算headEl的类型
   Class result=objectClass.getField("deptName").getType();
   //如果计算完成,返回结果。否则继续计算
   if(tailEl==null){
        return result;
   }else{
        return getFieldType(result,tailEl);
   }
}


测试时用
Class baseClass=Class.forName("testPackage.Dept");
System.out.println(getFieldType(baseClass,"dept.deptName"));
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics