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

    }
}

上記のシナリオでBulkCustomerVOは、CustomerVOインスタンスがあります。変更されるメソッドに設定されPagedDuplicateCustomerVO 、引数として渡されますgetDuplicateCustomerDetails()checkDuplicateCustomerこれらの変更は、メソッドのフローに影響します。

私がやりたいのは、に固有の別のcustomerVOインスタンスを作成することです。これにより、2番目のクラスでの変更が、クラス1のフローに影響を与えることはありません。bulkCustomerVO.getCustomerVO()checkDuplicateCustomergetDuplicateCustomerDetails

私にできることは、すべてのフィールドbulkCustomerVO.getCustomerVO()を新しいものにコピーすることですCustomerVOが、VOは巨大であり、私はそれをしたくありません。それは私のクラスでは不要なコードになります。

では、どうすればこのシナリオに取り組むことができますか?

編集-私はクローンcozを使用できませんこれはクローン可能を実装するために私の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

クローン作成を試みることができます。このためにPagedDuplicateCustomerVOは、インターフェースクローン可能インターフェースを実装する必要があります。次に、オブジェクトのcloneメソッドを呼び出して、浅いクローンを取得できます。

于 2012-06-14T06:20:00.533 に答える
0

この問題は解決しました。SerializationUtilsのクローンユーティリティを使用するBu。

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