zoukankan      html  css  js  c++  java
  • java获取对象属性类型、属性名称、属性值

    因为项目需要用到,于是简单封装了一些常用的操作:

    [java] view plaincopy
     
    1. /** 
    2.  * 根据属性名获取属性值 
    3.  * */  
    4.    private Object getFieldValueByName(String fieldName, Object o) {  
    5.        try {    
    6.            String firstLetter = fieldName.substring(0, 1).toUpperCase();    
    7.            String getter = "get" + firstLetter + fieldName.substring(1);    
    8.            Method method = o.getClass().getMethod(getter, new Class[] {});    
    9.            Object value = method.invoke(o, new Object[] {});    
    10.            return value;    
    11.        } catch (Exception e) {    
    12.            log.error(e.getMessage(),e);    
    13.            return null;    
    14.        }    
    15.    }   
    16.      
    17.    /** 
    18.     * 获取属性名数组 
    19.     * */  
    20.    private String[] getFiledName(Object o){  
    21.     Field[] fields=o.getClass().getDeclaredFields();  
    22.         String[] fieldNames=new String[fields.length];  
    23.     for(int i=0;i<fields.length;i++){  
    24.         System.out.println(fields[i].getType());  
    25.         fieldNames[i]=fields[i].getName();  
    26.     }  
    27.     return fieldNames;  
    28.    }  
    29.      
    30.    /** 
    31.     * 获取属性类型(type),属性名(name),属性值(value)的map组成的list 
    32.     * */  
    33.    private List getFiledsInfo(Object o){  
    34.     Field[] fields=o.getClass().getDeclaredFields();  
    35.         String[] fieldNames=new String[fields.length];  
    36.         List list = new ArrayList();  
    37.         Map infoMap=null;  
    38.     for(int i=0;i<fields.length;i++){  
    39.         infoMap = new HashMap();  
    40.         infoMap.put("type", fields[i].getType().toString());  
    41.         infoMap.put("name", fields[i].getName());  
    42.         infoMap.put("value", getFieldValueByName(fields[i].getName(), o));  
    43.         list.add(infoMap);  
    44.     }  
    45.     return list;  
    46.    }  
    47.      
    48.    /** 
    49.     * 获取对象的所有属性值,返回一个对象数组 
    50.     * */  
    51.    public Object[] getFiledValues(Object o){  
    52.     String[] fieldNames=this.getFiledName(o);  
    53.     Object[] value=new Object[fieldNames.length];  
    54.     for(int i=0;i<fieldNames.length;i++){  
    55.         value[i]=this.getFieldValueByName(fieldNames[i], o);  
    56.     }  
    57.     return value;  
    58.    }      
  • 相关阅读:
    屏蔽/捕获并输出错误
    物理机转Hyper-V虚拟机
    Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
    IDRAC 固件升级操:
    网卡启动安装dell服务器OS
    服务器指定网卡进行备份数据避免影响业务口
    【转载】用户通过WEB方式更改AD域帐户密码
    Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机
    Exchange 退信550 5.1.11 RESOLVER.ADR.ExRecipNotFound
    优酷kux视频转MP4
  • 原文地址:https://www.cnblogs.com/szxiaofei14/p/4033872.html
Copyright © 2011-2022 走看看