当前位置:编程学习 > html/css >>

万能对象拷贝工具 支持不同数据类型

[html]  
import java.lang.reflect.Field;  
import java.text.ParseException;  
import java.text.SimpleDateFormat;  
import java.util.ArrayList;  
import java.util.Date;  
import java.util.HashMap;  
  
public class BeanUtil {  
    /**  
     * 拷贝相同属性  
     * 从src 复制到 des  
     */  
    public static void copyPropertys(Object src, Object des){  
        ArrayList<Field> srcFields = new ArrayList<Field>();  
        HashMap<String,Field> desFields = new HashMap<String,Field>();  
        for(Field field : src.getClass().getDeclaredFields()){  
            srcFields.add(field);  
        }  
        for(Field field : des.getClass().getDeclaredFields()){  
            desFields.put(field.getName(),field);  
        }  
        for(Field srcfield :srcFields){  
            try {  
                if(desFields.containsKey(srcfield.getName()))  
                {  
                    Field desField = desFields.get(srcfield.getName());  
                    if(srcfield.getName().equals("serialVersionUID")){  
                        continue;  
                    }  
                    desField.setAccessible(true);  
                    srcfield.setAccessible(true);  
                    if(srcfield.getType()!=desField.getType())  
                    {  
                        if((srcfield.getType() == java.util.Date.class || srcfield.getType() == java.sql.Date.class || srcfield.getType() ==   
                            java.sql.Timestamp.class) && desField.getType() == java.lang.String.class)  
                        {  
                            java.util.Date dates = (Date) srcfield.get(src);  
                            desField.set(des, formatDate(dates));  
                        }else  
                        {  
                            if(desField.getType() == java.util.Date.class || desField.getType() == java.sql.Date.class  || desField.getType() == java.sql.Timestamp.class )  
                            {  
                                java.util.Date date = ToDate(String.valueOf(srcfield.get(src)));  
                                desField.set(des,date);  
                            }else if(desField.getType() == java.lang.Integer.class || desField.getType() == int.class )  
                            {  
                                Integer ints =java.lang.Integer.valueOf(String.valueOf(srcfield.get(src)));  
                                desField.set(des,ints);  
                            }else if(desField.getType() == java.lang.Long.class )  
                            {  
                                java.lang.Long longs = java.lang.Long.getLong(String.valueOf(srcfield.get(src)));  
                                desField.set(des,longs);  
                            }else{  
                                desField.set(des,String.valueOf(srcfield.get(src)));  
                            }  
                        }  
                    }else  
                    {  
                        desField.set(des,srcfield.get(src));  
                    }  
                    desField.setAccessible(false);  
                    srcfield.setAccessible(false);  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  
    /**  
     * 把Date格式成yyyy-MM-dd HH:mm:ss格式的字符串  
     */  
    public static String formatDate(Date date) {  
        if (date == null)  
            return "";  
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        return df.format(date);  
    }  
    /**  
<
补充:web前端 , HTML 5 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,