java - Java 中通过引用传递的新对象引用

标签 java object

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() 中的所有字段到新CustomerVO ,但是 VO 很大,我不想这样做。这将是我类(class)中不需要的代码。

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

编辑-我无法使用克隆,因为这将导致更改我的 VO 以实现可克隆的开销

最佳答案

参见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;

}

关于java - Java 中通过引用传递的新对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11027582/

相关文章:

java - 如何使用新方法在函数内传递变量

ios - 来自多个循环的对象数组

javascript - 如何在单击时循环遍历一组背景图像

java - 如何在JAVA中转义Restful API查询字符串中的特殊字符

java - 尝试在单击按钮时在 JPanel 中添加动态定位的图像

java - 有人能告诉我如何在 java 中创建线程组中 n 个线程的数组吗?

java - String.split 与 ** 崩溃

ios - 如何将 'Restore Purchase' 方法添加到我的应用内购买

c++ - 如何修复基类中的内存分配错误?

java - 返回 Ljava.lang.Object 的字符串值