java获取对象属性类型、属性名称、属性值

获取属性 修饰符:【在Field[]循环中使用】

String modifier = Modifier.toString(fields[i].getModifiers());
/**
 * 根据属性名获取属性值
 * */
   private Object getFieldValueByName(String fieldName, Object o) {
       try {
           String firstLetter = fieldName.substring(0, 1).toUpperCase();
           String getter = "get" + firstLetter + fieldName.substring(1);
           Method method = o.getClass().getMethod(getter, new Class[] {});
           Object value = method.invoke(o, new Object[] {});
           return value;
       } catch (Exception e) {
           log.error(e.getMessage(),e);
           return null;
       }
   }   

   /**
    * 获取属性名数组
    * */
   private String[] getFiledName(Object o){
    Field[] fields=o.getClass().getDeclaredFields();
        String[] fieldNames=new String[fields.length];
    for(int i=0;i<fields.length;i++){
        System.out.println(fields[i].getType());
        fieldNames[i]=fields[i].getName();
    }
    return fieldNames;
   }  

   /**
    * 获取属性类型(type),属性名(name),属性值(value)的map组成的list
    * */
   private List getFiledsInfo(Object o){
    Field[] fields=o.getClass().getDeclaredFields();
        String[] fieldNames=new String[fields.length];
        List list = new ArrayList();
        Map infoMap=null;
    for(int i=0;i<fields.length;i++){
        infoMap = new HashMap();
        infoMap.put("type", fields[i].getType().toString());
        infoMap.put("name", fields[i].getName());
        infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
        list.add(infoMap);
    }
    return list;
   }  

   /**
    * 获取对象的所有属性值,返回一个对象数组
    * */
   public Object[] getFiledValues(Object o){
    String[] fieldNames=this.getFiledName(o);
    Object[] value=new Object[fieldNames.length];
    for(int i=0;i<fieldNames.length;i++){
        value[i]=this.getFieldValueByName(fieldNames[i], o);
    }
    return value;
   } 

随机推荐

  1. c#保留小数点后位数的方法

    Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...

  2. JavaMeloay配置用于系统监控

    JavaMelody JavaMelody能够监控Java或Java EE应用程序服务器的运行状况,并以图标的方式显示:java内存.CPU使用情况.用户Session数量.JDBC连接数.http请 ...

  3. 【吉光片羽】ie6兼容性的几个点

    1.浮动换行.自己写个导航,li向左浮动,到ie6下全部错开了. --> 还是在现有bootstrap框架的基础上修改样式保险一些. <div id="mymenu" ...

  4. 网络异步编程(C#)团购课

    新生命开发团队大石头讲解网络异步编程(C#) 内容:网络编程基础.IOCP.APM.SAEA 时长:2~3小时 价格:20元,20人及以上成团,http://item.taobao.com/item. ...

  5. asp.net开发中常见公共捕获异常方式总结(附源码)

    本文实例总结了asp.net开发中常见公共捕获异常方式.分享给大家供大家参考,具体如下: 前言:在实际开发过程中,对于一个应用系统来说,应该有自己的一套成熟的异常处理框架,这样当异常发生时,也能得到统 ...

  6. Almost Sorted Array---hdu5532(简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5532 题意:问一个含有n个数的序列,删除一个数后是否有序(递增或递减都可以) 我们只要求一下最长上升子 ...

  7. POM的配置文件

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. HDU1465-装错信封-递推

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  9. uva11183 最小树形图模板题

    很简单的模板题,不多说了 #include<iostream> #include<cstring> #include<cstdio> #define INF 0x3 ...

  10. Egret 按钮点击缩放效果

    非代码设计,exml直接操作 设计模式下选中对象,之后[源码],会直接定位到该对象在exml源码中的位置 width.down = "100%" 表示当按钮按下的时候宽度为 100 ...