我是靠谱客的博主 谦让春天,最近开发中收集的这篇文章主要介绍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)) ???

**???**

谢谢了先!

最后

以上就是谦让春天为你收集整理的java 变量组合_请教:怎么用反射把两个Java子类的成员变量合并?的全部内容,希望文章能够帮你解决java 变量组合_请教:怎么用反射把两个Java子类的成员变量合并?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部