クラス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
インスタンスを作成することです。これにより、2番目のクラスでの変更が、クラス1のフローに影響を与えることはありません。bulkCustomerVO.getCustomerVO()
checkDuplicateCustomer
getDuplicateCustomerDetails
私にできることは、すべてのフィールドbulkCustomerVO.getCustomerVO()
を新しいものにコピーすることですCustomerVO
が、VOは巨大であり、私はそれをしたくありません。それは私のクラスでは不要なコードになります。
では、どうすればこのシナリオに取り組むことができますか?
編集-私はクローンcozを使用できませんこれはクローン可能を実装するために私のVOを変更するオーバーヘッドにつながります