第1类
private void checkDuplicateCustomer(BulkCustomerVO bulkCustomerVO) {
PagedDuplicateCustomerVO duplicateCustomerVO = new PagedDuplicateCustomerVO();
duplicateCustomerVO.setCustomer(bulkCustomerVO.getCustomerVO());
duplicateCustomerVO = getCustomerBO().getDuplicateCustomerDetails(duplicateCustomerVO);
if (!MyUtils.isNull(duplicateCustomerVO)) {
if (duplicateCustomerVO.isValid()) {
// some operation
bulkCustomerVO.setErrorDetals(...........)
}
}
}
第2类
public PagedDuplicateCustomerVO getDuplicateCustomerDetails(PagedDuplicateCustomerVO pagedDuplicateCustomer) {
PagedDuplicateCustomerVO pagedDuplicateCustomerVO = pagedDuplicateCustomer;
// some operation that changes customerVO reference in pagedDuplicateCustomer
}
}
在上面的方案中,BulkCustomerVO
有CustomerVO
个实例。它被设置为PagedDuplicateCustomerVO
并作为参数传递
改为getDuplicateCustomerDetails()
方法。这些更改会影响checkDuplicateCustomer
方法中的流程。
我想要做的是在customerVO
bulkCustomerVO.getCustomerVO()
中创建一个单独的checkDuplicateCustomer
实例,该实例专用于getDuplicateCustomerDetails
,因此第二类中的任何更改都不会影响我的流量在第1课。
我能做什么将所有字段从bulkCustomerVO.getCustomerVO()
复制到新CustomerVO
,但VO很大,我不想这样做。这将是我班上不需要的代码。
那么,我该如何处理这种情况?
编辑 - 我不能使用克隆因为这会导致改变我的VO以实现克隆答案 0 :(得分:3)
参见http://commons.apache.org/beanutils/api/org/apache/commons/beanutils/BeanUtils.html#copyProperties(java.lang.Object,java.lang.Object)
也许这就是你想要的。
==================
public PagedDuplicateCustomerVO getDuplicateCustomerDetails(PagedDuplicateCustomerVO pagedDuplicateCustomer) {
CustomerVO customer = new CustomerVO();
BeanUtils.copyProperties(customer, pagedDuplicateCustomer.getCustomerVO());
pagedDuplicateCustomer.setCustomer(customer);
return pagedDuplicateCustomer;
}
答案 1 :(得分:0)
您可以尝试进行克隆。为此,PagedDuplicateCustomerVO
必须实现接口Clonnable接口。然后,您可以在对象上调用clone方法以获得浅层克隆。
答案 2 :(得分:0)
我已经解决了这个问题。通过使用SerializationUtils的克隆utiles。
duplicateCustomerVO.setCustomer((CustomerVO) SerializationUtils
.clone(bulkCustomerVO.getCustomerVO()));