JAVA Objectオブジェクトのclone簡単で実用的

4453 ワード

宣言:
ここでは具体的な底辺の詳細についてのみ説明しますが、他の文章を見てください.
詳細についてはこちらをクリックしてください
シーンの説明を使用するには:
1つのパラメータオブジェクトを使用し、2回使用し、2回目の使用は1回目のパラメータに基づいて部分的に変更しますが、1回目のパラメータの内容には影響しません.
使用方法:
ステップ1:
clone()メソッドを使用するには、パラメータオブジェクトがimplements Cloneable実装clone()メソッドの例を実装する必要があります.
package com.renrenche.databus.domain.logdata.sem;

import com.renrenche.databus.domain.common.BaseBootParam;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;

/**
 * @author  
 * @description  
 * @data 2018/7/23 11:03
 * Version 1.0
 **/
@Setter
@Getter
@ToString
@EqualsAndHashCode
public class SemKeyWordParam extends BaseBootParam implements Serializable, Cloneable  {
   
    @Override
    public SemKeyWordParam clone() throws CloneNotSupportedException {
        return (SemKeyWordParam) super.clone();
    }

    /**
     *     ,        
     */
    private String username;


    /**
     *                      ,key     ,value     。
     */
    private String access_fields;
    /**
     *                      ,            
     */
    private String access_frs;

    /**
     *                。
     */
    private String access_service_line;
    /**
     *     ID  ,            
     */
    private String account_ids;
    /**
     *      @day:  @week:  @month: 
     */
    private String date_type;
    /**
     *        【date_type】           ,    T+91  
     */
    private String start_date;
    /**
     *        【date_type】           ,    T+1  
     */
    private String end_date;
    /**
     *        【date_type】           ,    T+91  
     */
    private String start_date_contrast;
    /**
     *        【date_type】           ,    T+1  
     */
    private String end_date_contrast;

 
   



}

ステップ2: 
エンティティがCloneable実装clone()メソッドを実装すれば直接使用できますが、cloneメソッドを使用するにはtry catchまたはthrowsが必要です.  Exception
例:
@Override
    public Result selectKeyWordCompareData(SemKeyWordParam semKeyWordParam) throws Exception{
        List> dataList = new ArrayList>();

        List> mapData = new ArrayList>();
        List> mapCompareData = new ArrayList>();
        String stareTime = "";
        String endTime = "";

        stareTime = semKeyWordParam.getStart_date();
        endTime = semKeyWordParam.getEnd_date();
        String stareContrastTime = semKeyWordParam.getStart_date_contrast();
        String endContrastTime = semKeyWordParam.getEnd_date_contrast();

        SemKeyWordParam semKeyWordParam2= null;
        semKeyWordParam2=semKeyWordParam.clone();


         
        //  sql
        //  select  where    group by     kid  
        prestoSemKeyWordSqlTemplate.setKeyWordWhere(semKeyWordParam,"comparelist");
        if(semKeyWordParam.getKids() != null){
            mapData=mktReportKeywordDistinctMapper.selectKeyWordCompare(semKeyWordParam);
        }else {
               mapData=mktReportKeywordDistinctMapper.selectKeyWordCompareCount(semKeyWordParam);
        }


        semKeyWordParam2.setStart_date(semKeyWordParam.getStart_date_contrast());
        semKeyWordParam2.setEnd_date(semKeyWordParam.getEnd_date_contrast());
        prestoSemKeyWordSqlTemplate.setKeyWordWhere(semKeyWordParam2,"comparelist");
        if(semKeyWordParam2.getKids() != null){
            mapCompareData=mktReportKeywordDistinctMapper.selectKeyWordCompare(semKeyWordParam2);
        }else {
            mapCompareData=mktReportKeywordDistinctMapper.selectKeyWordCompareCount(semKeyWordParam2);
        }



        //    
        if (mapData != null && mapCompareData != null){
            for (int a = 0; a < mapData.size(); a++) {
                mapData.get(a).put("start_date", stareTime);
                mapData.get(a).put("end_date", endTime);
                mapCompareData.get(a).put("start_date", stareContrastTime);
                mapCompareData.get(a).put("end_date", endContrastTime);
                dataList.add(mapData.get(a));
                dataList.add(mapCompareData.get(a));
                
            }
        }


        return new Result(ResultEnum.SUCCESS.getCode(), ResultEnum.SUCCESS.getMsg(), dataList.size(), dataList);
    }

終わりだ!
ご覧いただきありがとうございます