0

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

    }
}

在上述场景中,BulkCustomerVOCustomerVO实例。它被设置为PagedDuplicateCustomerVO 并作为参数传递给getDuplicateCustomerDetails()它正在更改的方法。这些变化会影响我的方法流程checkDuplicateCustomer

我想要做的是创建一个单独的customerVO实例bulkCustomerVO.getCustomerVO()checkDuplicateCustomer其中特定getDuplicateCustomerDetails于第二类的任何更改都不会影响我在第一类的流程。

我能做什么将所有字段从复制bulkCustomerVO.getCustomerVO()到 new CustomerVO,但是 VO 很大,我不想这样做。这将是我班上不需要的代码。

那么,我该如何处理这种情况?

编辑-我不能使用克隆因为这将导致改变我的 VO 以实现可克隆

4

3 回答 3

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;

}
于 2012-06-14T06:17:28.183 回答
0

我已经解决了这个问题。Bu 使用 SerializationUtils 的克隆工具。

duplicateCustomerVO.setCustomer((CustomerVO) SerializationUtils
                .clone(bulkCustomerVO.getCustomerVO()));
于 2012-06-14T13:37:11.557 回答
0

您可以尝试进行克隆。为此,您PagedDuplicateCustomerVO必须实现接口 Clonnable 接口。然后可以在对象上调用 clone 方法来获取浅克隆。

于 2012-06-14T06:20:00.533 回答