java擷取對象屬性類型、屬性名稱、屬性值

來源:互聯網
上載者:User

因為項目需要用到,於是簡單封裝了一些常用的操作:

/** * 根據屬性名稱擷取屬性值 * */    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;    }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.