如何获取一个类的所有字段

Hab*_*our 5 java reflection

我有两个具有相同字段数和相同字段名称的类。唯一的不同是它们的字段类型。

我需要做的是从一个类中获取所有字段值并将它们放入另一个类中。

public class PersonA {
    private String name;
    private String family;
    //here AddressDto package is com.test.project.employer
    private AddressDto addressDto;
    //here ContactInfo package is com.test.project.employer
    private List<ContactInfo> contactInfo;
}

public class PersonB {
        private String name;
        private String family;
        //here AddressDto package is com.test.project.customer
        private AddressDto addressDto; 
        //here ContactInfo package is com.test.project.customer
        private List<ContactInfo> contactInfo;
    }
Run Code Online (Sandbox Code Playgroud)

外部 Dtos 内也可能有其他 Dtos 或带有自定义 Dtos 的地图,因此我需要管理所有要检查的字段,看看内部是否有其他 dto!

我已经完成的工作适用于 Java 类和原始类型,如 String、BigDecimal、int 等,但不适用于我的应用程序 dtos。

这是我的代码:

PersonA personA = new PersonA();
PersonB personB = new PersonB();

Field[] aFields = personA.getClass().getDeclaredFields();

for (Field field : aFields){
    field.setAccessible(true);
    Field bField= personB.getClass().getDeclaredField(field.getName());
    bField.setAccessible(true);
    Object value = field.get(personA);
    bField.set(personB, value);
}
Run Code Online (Sandbox Code Playgroud)

我的想法是以递归形式编写它。我的问题有什么解决办法吗?