通过反射的方式实现对象相同属性赋值

通过反射的方式,将一个对象的属性值赋值到另外一个对象相同名称的属性值上:

//实体类反射
    public static Object initDtobyDto(Object t1, Object t2) {
        Class ct1 = (Class) t1.getClass();
        Class ct2 = (Class) t2.getClass();

        Field[] fs = ct1.getDeclaredFields();
        Field[] nfs = ct2.getDeclaredFields();
        for(int i = 0 ; i < fs.length; i++){
            Field f = fs[i];
            f.setAccessible(true); //设置些属性是可以访问的
            Object val = new Object();
            try {
                val = f.get(t1);//得到此属性的值
            }catch(IllegalAccessException e){
                logger.error("initDtobyDto:",e);
            }
            for(int j = 0; j < nfs.length; j++){
                Field nf = nfs[j];
                nf.setAccessible(true); //设置些属性是可以访问的
                if(f.getName().equals(nf.getName())){
                    try {
                        nf.set(t2, val);
                    }catch(IllegalAccessException e){
                        logger.error("initDtobyDto:",e);
                    }
                }
            }
        }
        return t2;
    }

猜你喜欢

转载自zl520878.iteye.com/blog/2323525