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
所以第二堂课的任何变化都不会影响我第一个类的流程。
我可以做什么复制 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/