gpt4 book ai didi

java - 从同一类的另一个实例填充对象字段

转载 作者:行者123 更新时间:2023-12-02 02:31:47 27 4
gpt4 key购买 nike

我有同一类的两个实例:一个在其所有字段中都有值,另一个只有一些字段(其他字段为空)。我想使用第二个对象的值更新第一个对象的值,前提是它不为空。像这样的事情:

class MyObject {
private void setObject(MyObject other) {
if (other.getField1() != null) this.field1 = other.getField1();
.....
}
}

当我有很多字段时,setObject 方法的代码非常长,并且我需要在所有对象中实现该方法。我想知道是否可以以更通用的方式完成:获取对象作为参数 -> 迭代其字段 -> 如果不为空则填充。

我尝试使用一些反射来做到这一点,但目前没有成功。

最佳答案

我认为你需要这样的东西

class MyObject{

public Integer a;
public Integer b;
public Integer c;
}

public class Reflect {

public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException {
// TODO Auto-generated method stub
MyObject a = new MyObject();
a.a=4;
MyObject b = new MyObject();
b.a=2;
b.b=3;
b.c=5;
GenericInstancePopulateMethod(MyObject.class, a, b);

System.out.println(a.b);//this prints 3 as expected
System.out.println(a.a);//this prints 4 as expected
}
static void GenericInstancePopulateMethod(Class<MyObject> clz, MyObject a, MyObject b) throws IllegalArgumentException, IllegalAccessException{

Field[] fields = clz.getFields();

for(Field f : fields){
if(f.get(a) == null)
f.set(a, f.get(b)) ;//a fields are assigned b fields' values
}
}
}

我使用了 Field[],但如果您有 getter 和 setter 方法,则可以使用 Method[]

关于java - 从同一类的另一个实例填充对象字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46982162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com