java獲取對象屬性類型、屬性名稱、屬性值、方法名稱

2018-10-19 16:54 更新

首先需要引入下面兩個反射包文件:

import java.lang.reflect.Method; import java.lang.reflect.Field; 代碼如下:

    * 根據(jù)屬性名獲取屬性值  
     * */  
    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;    
        }    
    }   

      
    /**  
     * 獲取屬性名數(shù)組  
     * */  
    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;  
    }  

      
    /**  
     * 獲取對象的所有屬性值,返回一個對象數(shù)組  
     * */  
    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;  
    }     
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號