我正在使用Spring Framework编写一些Java代码。
我有两个bean,person和person1。它们的结构略有不同,也就是说每个变量的名称略有不同。
我试图将一个bean的详细信息复制到另一个bean中。只有当值不为空时,才想要复制该值。我看到了一个名为BeanUtils的API,但它将无论是否为空都进行复制。
这是我的代码:
if (person != null) {
if (person.getAddressDetails() != null) {
if (person.getAddressDetails().getStreetNumber() != null) {
person1.getAddressDetails().setStreetNo(person.getAddressDetails().getStreetNumber());
}
if (person.getAddressDetails().getStreetName() != null) {
person1.getAddressDetails().setStreetName(person.getAddressDetails().getStreetName());
}
}
if (person.getHomeDetails() != null) {
if (person.getHomeDetails().getPhoneNumber() != null) {
person1.getHomeDetails().setSPhoneNo(person.getHomeDetails().getPhoneNumber());
}
}
}
我有大约40个节点需要复制,这将创建很多丑陋的代码。有没有更好的方法?也许我可以创建一个映射或其他东西,然后通过循环来执行它?不确定。
如果没有,有没有人知道是否可以使BeanUtils在不复制空值的情况下运行复制?
原因是第二个bean(person1)已经有了一堆值。我只想在有新值需要覆盖时才进行覆盖。
通常变量是较大系统的一部分,我无法标准化名称。
谢谢
person
和person1
不是同一类的实例。"它们具有稍微不同的结构,也就是说每个变量的名称略有不同。" - user177800person1
和person
是不同的类。 - Jason