gpt4 book ai didi

java - 如何映射两个类中的所有可用字段(无继承)

转载 作者:行者123 更新时间:2023-12-02 06:09:38 26 4
gpt4 key购买 nike

假设我有两个 A 类和 B 类,

A类有很多很多字段。B 类有一些字段,所有字段都出现在 A 类中。

是否可以自动将可用字段从对象 A 映射到对象 B?

@编辑

class A {
private int field1;
private int field2;
private int field3;
private int field4;
private int field5;
private int field6;
private int field7;

// getters, setters
}

class B {
private int field2;
private int field6;

// getters, setters
}

当我反对 A 和 B 时,我想从 A 获取字段并将其放入 B。但我不想使用 getter/setter,而是自动使用

最佳答案

您可以使用反射:

A a = new A();
B b = new B();

a.field1 = 1;
a.field2 = 3;

for (Field aField : a.getClass().getDeclaredFields()) {
try {
Field bCounterpart = b.getClass().getDeclaredField(aField.getName());
if (bCounterpart.getType().equals(aField.getType())) { // Doesn't work well with autoboxing etc. The types have to explictly match
bCounterpart.setAccessible(true); // Only for private fields
aField.setAccessible(true); // Only for private fields
bCounterpart.set(b, aField.get(a));
}
} catch (NoSuchFieldException e) {
// B doesn't have the field
}
}

System.out.println(b.field2); // 3
System.out.println(b.field6); // 0

关于java - 如何映射两个类中的所有可用字段(无继承),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55919989/

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