java 变量组合_请教:怎么用反射把两个Java子类的成员变量合并?

我想实现这样一个功能:两个Java子类A和B,继承自同一父类,但是它们的成员变量的值各不相同。现在想把A和B合并成C,要求:

1 当A的某成员变量不是null、B的某成员变量是null时,取A的成员变量;

2 当B的某成员变量不是null、A的某成员变量是null时,取B的成员变量;

3 当A和B的某成员变量都不是null时,姑且取B的成员变量。

比如:

class A implements Serializable {

private int roleID = 123456;

private String userName = "一个码农";

private String passWord = "111";

}

class B implements Serializable {

private int roleID = 999;

private String userName;

private String passWord;

}

那么合并之后应该得到:

class C {

private int roleID = 999;

private String userName = "一个码农";

private String passWord = "111";

}

我写了一个比较简单的反射,虽然可以遍历所有成员变量,但是不知道该怎么合并?

public static void combine(Object object1, Object object2) {

Class cls1 = object1.getClass();

Class cls2 = object2.getClass();

Field[] fields1 = cls1.getDeclaredFields();

Field[] fields2 = cls2.getDeclaredFields();

for (int i = 0; i < fields1.length; i++) {

Field f1 = fields1[i];

Field f2 = fields2[i];

f1.setAccessible(true);

f2.setAccessible(true);

try {

// 假设f2就是合并后的C……

if (f2.get(object) == null)

f2.setName(f1.get(object)) ???

else if (f1.get(object) == null)

f2.setName(f2.get(object)) ???

**???**

谢谢了先!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值