zoukankan      html  css  js  c++  java
  • list<?>转换成 对应的 class

    项目中用到的,list转换成bean。因为查询出来的数据用list 泛型接收,要返回 实体对象。所以需要对应转换。

    主要用到的技术:反射。

    上代码:

    public static <T> List<T> toBean(List<?> list, Class<T> clz) {
            int count = 0;
            Field[] fields = clz.getDeclaredFields();
            List<T> lst = new ArrayList();
            String propertyName = "";
            Object obj = null;
    
            try {
                for(int i = 0; i < list.size(); ++i) {
                    obj = clz.newInstance();
                    Object[] oo = (Object[])list.get(i);
                    Field[] var12 = fields;
                    int var11 = fields.length;
    
                    for(int var10 = 0; var10 < var11; ++var10) {
                        Field fd = var12[var10];
                        Type t = fd.getGenericType();
                        String className = t.toString().replace("class", "");
                        Class<?> type = Class.forName(className.trim());
                        propertyName = "set" + change(fd.getName());
                        Method mt = obj.getClass().getMethod(propertyName, new Class[]{type});
                        if(!"java.lang.String".equals(className.trim())) {
                            if("java.lang.Integer".equals(className.trim())) {
                                mt.invoke(obj, new Object[]{Integer.valueOf(Integer.parseInt(oo[count] == null?"-1":oo[count].toString()))});
                            } else if("java.lang.Long".equals(className.trim())) {
                                mt.invoke(obj, new Object[]{Long.valueOf(Long.parseLong(oo[count] == null?"-1":oo[count].toString()))});
                            } else {
                                Clob clobs;
                                if("java.sql.Date".equals(className.trim())) {
                                    Date date = (Date)oo[count];
                                    if(!"".equals(date) && date != null) {
                                        java.sql.Date sd = new java.sql.Date(date.getTime());
                                        mt.invoke(obj, new Object[]{sd});
                                    } else {
                                        clobs = null;
                                        mt.invoke(obj, new Object[]{clobs});
                                    }
                                } else if("oracle.sql.CLOB".equals(className.trim())) {
                                    if(oo[count] == null) {
                                        mt.invoke(obj, new Object[1]);
                                    } else {
                                        SerializableClobProxy sc = (SerializableClobProxy)Proxy.getInvocationHandler(oo[count]);
                                        clobs = sc.getWrappedClob();
                                        CLOB clob = (CLOB)clobs;
                                        mt.invoke(obj, new Object[]{clob});
                                    }
                                } else {
                                    mt.invoke(obj, new Object[]{oo[count]});
                                }
                            }
                        } else {
                            String s = "" + oo[count];
                            if(s == null || "null".equals(s)) {
                                s = "";
                            }
    
                            mt.invoke(obj, new Object[]{s});
                        }
    
                        ++count;
                    }
    
                    count = 0;
                    lst.add((T)obj);
                }
            } catch (SecurityException var20) {
                logger.error(var20.getMessage());
            } catch (IllegalArgumentException var21) {
                logger.error(var21.getMessage());
            } catch (InstantiationException var22) {
                logger.error(var22.getMessage());
            } catch (IllegalAccessException var23) {
                logger.error(var23.getMessage());
            } catch (ClassNotFoundException var24) {
                var24.printStackTrace();
                logger.error(var24.getMessage());
            } catch (NoSuchMethodException var25) {
                logger.error(var25.getMessage());
            } catch (InvocationTargetException var26) {
                logger.error(var26.getMessage());
            }
    
            return lst;
        }
  • 相关阅读:
    JS加载机制
    js原型和原型链(用代码理解代码)
    解决echarts图形由于label过长导致文字显示不全问题
    微信小程序setData()异常
    Add GNOME to a CentOS Minimal Install
    vim的tab缩进及用空格设置
    ORA-12547: TNS:lost contact
    python+Django实现Nagios自动化添加监控项目
    python <tab>自动补全
    电信服务规范
  • 原文地址:https://www.cnblogs.com/caozengling/p/7026164.html
Copyright © 2011-2022 走看看