当前位置: 首页 > 面试题库 >

为了将非null属性从对象复制到另一个对象的助手?(Java)

鲁淇
2023-03-14
问题内容

见下课

public class Parent {

    private String name;
    private int age;
    private Date birthDate;

    // getters and setters

}

假设我创建了一个父对象,如下所示

Parent parent = new Parent();

parent.setName("A meaningful name");
parent.setAge(20);

根据上面的代码注意,birthDate属性为null。现在我只想将非null属性从父对象复制到另一个对象。就像是

SomeHelper.copyNonNullProperties(parent, anotherParent);

我需要它,因为我想更新anotherParent对象而不用null值覆盖其非null值。

你知道这样的帮手吗?

我是否接受最少的代码作为答案,是否不介意使用助手

问候,


问题答案:

我想您已经有了解决方案,因为自您提出要求以来已经发生了很多时间。但是,它未标记为已解决,也许我可以帮助其他用户。

你有没有定义的一个子类试过BeanUtilsBean了的org.commons.beanutils包?实际上,BeanUtils使用此类,因此这是dfa提出的解决方案的改进。

查看该类的源代码,我认为您可以copyProperty通过检查null值来覆盖该方法,如果value为null则不执行任何操作。

像这样的东西:

package foo.bar.copy;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtilsBean;

public class NullAwareBeanUtilsBean extends BeanUtilsBean{

    @Override
    public void copyProperty(Object dest, String name, Object value)
            throws IllegalAccessException, InvocationTargetException {
        if(value==null)return;
        super.copyProperty(dest, name, value);
    }

}

然后,您只需实例化a NullAwareBeanUtilsBean并使用它来复制您的bean,例如:

BeanUtilsBean notNull=new NullAwareBeanUtilsBean();
notNull.copyProperties(dest, orig);


 类似资料:
  • 假设我们有一个这样定义的对象A: 出于某种原因,我需要创建第二个对象B,它只具有对象A的前两个属性: 所以我的问题是:将对象A复制到对象B的最佳方法是什么?我一直在逐个复制获取者和设置者的属性,但有些事情告诉我一定有更好的方法来做到这一点!特别是当对象将具有很多属性时,我必须编写一行又一行的代码,只是为了将它们全部复制到第二个对象B... 多谢了:) 编辑:我一直被一个“另一个问题的可能重复”提醒

  • 问题内容: 在Python中,是否有一个库方法可在同一类的两个(已经存在)实例之间复制所有属性? 我的意思是,类似Apache Commons的东西 问题答案: 如果您的班级未修改或出于特殊属性访问目的,则所有属性都存储在其中,因此您可以执行以下操作: 如果使用python属性,则应查看并筛选出要复制的属性。

  • 我目前有一个ArrayList,其中包含“Product”对象,每个对象中包含一个字符串、整数和double。我希望能够使用参数搜索对象,找出与搜索参数匹配的ID(整数值),并将此对象复制到另一个ArrayList中。有没有可能通过迭代器实现这一点,或者有没有更简单的方法?

  • 这是我的代码: 我想将的值设置为,我该怎么做?我试过,

  • 嗨,我有两个对象列表。清单1和清单2 App1中的员工列表 在sql中,我们可以很容易地通过ID列进行连接。但是这里要点击seperate API来阅读清单2。 我可以从清单2创建map,并将EmpId作为键,继续从map获取对象,并将详细信息设置到清单1。 想知道有没有更好的方法来做这件事。

  • 我试图创建一个类来保存数量可变的项(它们本身就是另一个类对象)。 我有第二课: 然后类1包含类2的数组: 我想做的是: 第一行设置myQuotes。Curr是没有问题的,但是当我试图在数组中设置一个值时,下一行错误与运行时91对象变量或块变量未设置 有没有关于我做错了什么以及如何设置类数组中元素的值的指针? 提前谢谢!