首页 > 其他 > 详细

Java 遍历一个对象的属性 将非空属性赋值给另一个对象

时间:2014-02-15 05:10:53      阅读:828      评论:0      收藏:0      [点我收藏+]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<br>    //将origin属性注入到destination中
    public <T> void mergeObject(T origin, T destination) {
        if (origin == null || destination == null)
            return;
        if (!origin.getClass().equals(destination.getClass()))
            return;
 
        Field[] fields = origin.getClass().getDeclaredFields();
        for (int i = 0; i < fields.length; i++) {
            try {
                fields[i].setAccessible(true);
                Object value = fields[i].get(origin);
                if (null != value) {
                    fields[i].set(destination, value);
                }
                fields[i].setAccessible(false);
            } catch (Exception e) {
            }
        }
    }

  以上是赋值给同类对象,下面是赋值给非同类的对象的同名属性例子

bubuko.com,布布扣
package test.test;

import java.lang.reflect.Field;

class Temp{
    String a = null;
    String b = null;
    String c = null;
}

class Temp2{
    String a = null;
}

public class Test3 {

    public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
        // TODO Auto-generated method stub
        Temp t1 = new Temp();
        t1.a ="value a";
        Temp t2 = new Temp();
        t2.b = "value b";
        Temp2 t3 = new Temp2();
        
        Field[] fields = t1.getClass().getDeclaredFields();
        
        
        Field[] fields2 = t3.getClass().getDeclaredFields();
        for(int i=0;i<fields.length;i++)
            if(fields[i].getName().equals(fields2[0].getName())){
                fields2[0].set(t3, fields[i].get(t1));
            }
        System.out.println(t3.a);

    }

}
bubuko.com,布布扣

Java 遍历一个对象的属性 将非空属性赋值给另一个对象

原文:http://www.cnblogs.com/flying607/p/3549837.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!