• java获取对象属性类型、属性名称、属性值 【转】


        /**
         * 根据属性名获取属性值
         * */
        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;
        }    

    文章来源 : http://blog.csdn.net/linshutao/article/details/7693625

  • 相关阅读:
    android 如何在手机上 安装两个同样的app
    Ubuntu 16.04 安装Gitlab
    VScode开发C++常用插件
    过滤text字段为空的数据
    ES标签搜索并解决评分排序问题
    3
    2
    1
    9
    Maven3种打包方式
  • 原文地址:https://www.cnblogs.com/macula/p/3470735.html
Copyright © 2020-2023  润新知