zoukankan      html  css  js  c++  java
  • 将对象转换为指定的Map

    根据指定对象内的字段,获取信息放入Map。或者将整个对象打印出来。

    package com.chen.Test;
    
    import java.lang.reflect.Method;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Map;
    
    public class TestInvoke
    {
        private String c;
    
        private int num;
    
        private Date date;
        
        private boolean flag;
    
        
    
        public String getC()
        {
            return c;
        }
    
        public void setC(String c)
        {
            this.c = c;
        }
    
        public Date getDate()
        {
            return date;
        }
    
        public void setDate(Date date)
        {
            this.date = date;
        }
    
        public boolean isFlag()
        {
            return flag;
        }
    
        public void setFlag(boolean flag)
        {
            this.flag = flag;
        }
    
        public int getNum()
        {
            return num;
        }
    
        public void setNum(int num)
        {
            this.num = num;
        }
    
        /**根据column到obj对象中获取数值填充Map<br />
         * 
         * @author : EX-CHENWEIXIAN001 路人甲
         * @create_date :2013-5-11 下午06:57:11
         * @param obj
         * @param columns
         * @return
         */
        public static Map fillMapByObject(Object obj, String[] columns) 
        {
            String getMethodStartTag = "get"; // 获取数据的方法名前缀
            String isMethodStartTag = "is"; // boolean获取数据的方法名前缀
            if (obj instanceof Map)
            {
                return (Map)obj;
            }
            Map<String, Object> resultMap = new HashMap<String, Object>();
            Method[] methods = obj.getClass().getMethods();
            for (int i = 0; i < methods.length; i++)
            {
                String key = "";
                boolean flag = false;
                String methodName = methods[i].getName();
                if (methodName.subSequence(0, getMethodStartTag.length()).equals(getMethodStartTag) || methodName.subSequence(0, isMethodStartTag.length()).equals(isMethodStartTag))
                {
                    String tempName = "";
    //                 获取is后面的字段名称 
                    if (methodName.indexOf(isMethodStartTag) == 0){
                        tempName = methodName.substring(isMethodStartTag.length(), methodName.length());
                    }
                    // 获取get后面的字段名称 
                    else {
                        tempName = methodName.substring(getMethodStartTag.length(), methodName.length());
                    }
                    for (int j = 0; j < columns.length; j++)
                    {
                        if (tempName.equalsIgnoreCase(columns[j]))
                        {
                            key = columns[j];
                            flag = true;
                            break;
                        }
                    }
                }
                if (flag)
                {
                    Object val = null;
                    try
                    {
    //                     调用getter方法获取属性值
                        val = methods[i].invoke(obj);
                    } catch (Exception e)
                    {
                    }
                    resultMap.put(key, val);
                }
            }
            return resultMap;
        }
        
        /**对象转换为Map<br />
         * 
         * @author : EX-CHENWEIXIAN001 路人甲
         * @create_date :2013-5-11 下午06:57:11
         * @param obj
         * @param columns
         * @return
         */
        public static Map fillMapByObject(Object obj) 
        {
            String getMethodStartTag = "get"; // 获取数据的方法名前缀
            String isMethodStartTag = "is"; // boolean获取数据的方法名前缀
            if (obj instanceof Map)
            {
                return (Map)obj;
            }
            
            Map<String, Object> resultMap = new HashMap<String, Object>();
            Method[] methods = obj.getClass().getMethods();
            for (int i = 0; i < methods.length; i++)
            {
                String methodName = methods[i].getName();
                // 获取所有get方法
                if (methodName.subSequence(0, getMethodStartTag.length()).equals(getMethodStartTag) || methodName.subSequence(0, isMethodStartTag.length()).equals(isMethodStartTag))
                {
                    String tempName = "";
    //                 获取is后面的字段名称 
                    if (methodName.indexOf(isMethodStartTag) == 0){
                        tempName = methodName.substring(isMethodStartTag.length(), methodName.length());
                    }
                    // 获取get后面的字段名称 
                    else {
                        tempName = methodName.substring(getMethodStartTag.length(), methodName.length());
                    }
                    // 将第一个字符转换为小写
                    String firstName = tempName.substring(0, 1).toLowerCase();
                    String lastName = "";
                    if (tempName.length() > 1)
                    {
                        lastName = tempName.substring(1, tempName.length());
                    }
                    tempName = firstName + lastName;
                    Object val = null;
                    try
                    {
    //                     调用getter方法获取属性值
                        val = methods[i].invoke(obj);
                    } catch (Exception e)
                    {
                    }
                    resultMap.put(tempName, val);
                }
            }
            return resultMap;
        }
        
        /**
         * @author : EX-CHENWEIXIAN001 陈惟鲜
         * @create_date :2013-5-11 下午06:25:17
         * @param args
         */
        public static void main(String[] args)
        {
            String[] columns = { "c", "flag", "TAB" };
            TestInvoke t = new TestInvoke();
            t.setC("cc");
            t.setDate(new Date());
            t.setNum(28);
            
            Map mapTemp = new HashMap();
            mapTemp.put("id", "aa");
            mapTemp.put("ggg", "bb");
    
            System.out.println(fillMapByObject(t, columns));
            System.out.println(fillMapByObject(mapTemp, columns));
            System.out.println(fillMapByObject(t));
        }
    }
  • 相关阅读:
    Servlet中文件上传
    Servlet 返回Json数据格式
    Java通用oracle和mysql数据库连接
    JAVA JDBC
    Thread suspend()挂起resume()恢复
    Thread 线程池
    阿里巴巴开源框架java诊断工具--Arthas
    B Tree
    MySQL--高性能MySQL笔记二
    MySQL--高性能MySQL笔记一
  • 原文地址:https://www.cnblogs.com/a393060727/p/3075053.html
Copyright © 2011-2022 走看看