扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java瀵硅薄鐨勬繁鎷疯礉鎬庝箞瀹炵幇

扬州沐宇科技
2023-12-08 19:03:46
Java

鍦↗ava涓紝鍙互閫氳繃浠ヤ笅鍑犵鏂瑰紡瀹炵幇瀵硅薄鐨勬繁鎷疯礉锛?/p>

  1. 浣跨敤Object.clone()鏂规硶锛歄bject绫绘彁渚涗簡涓€涓彈淇濇姢鐨刢lone()鏂规硶锛屽彲浠ョ敤浜庡垱寤哄璞$殑娴呮嫹璐濄€傚鏋滆瀹炵幇娣辨嫹璐濓紝闇€瑕佸湪瑕佽繘琛屾嫹璐濈殑瀵硅薄绫讳腑瀹炵幇Cloneable鎺ュ彛锛屽苟閲嶅啓clone()鏂规硶锛屽湪clone()鏂规硶涓垱寤烘柊鐨勫璞★紝骞跺皢鍘熷璞$殑灞炴€у€艰祴缁欐柊瀵硅薄鐨勫睘鎬с€?/li>

绀轰緥浠g爜锛?/p>

public class MyClass implements Cloneable {
    private int id;
    private String name;
    
    // 鏋勯€犳柟娉?/span>
    
    // getter鍜宻etter鏂规硶
    
    @Override
    protected Object clone() throws CloneNotSupportedException {
        MyClass cloned = (MyClass) super.clone();
        // 瀵逛簬寮曠敤绫诲瀷鐨勫睘鎬э紝闇€瑕佽繘琛屾繁鎷疯礉
        cloned.name = this.name.clone();
        return cloned;
    }
}
  1. 瀹炵幇Serializable鎺ュ彛锛氬皢瀵硅薄搴忓垪鍖栦负瀛楄妭娴侊紝鐒跺悗鍐嶅皢瀛楄妭娴佸弽搴忓垪鍖栦负鏂扮殑瀵硅薄銆傝繖绉嶆柟娉曢渶瑕佺‘淇濆璞$殑鎵€鏈夋垚鍛樺彉閲忛兘鏄彲搴忓垪鍖栫殑銆?/li>

绀轰緥浠g爜锛?/p>

import java.io.*;

public class MyClass implements Serializable {
    private int id;
    private String name;
    
    // 鏋勯€犳柟娉?/span>
    
    // getter鍜宻etter鏂规硶
    
    public MyClass deepCopy() throws IOException, ClassNotFoundException {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(this);
        
        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
        ObjectInputStream ois = new ObjectInputStream(bis);
        return (MyClass) ois.readObject();
    }
}
  1. 浣跨敤绗笁鏂瑰簱锛氬彲浠ヤ娇鐢ㄤ竴浜涚涓夋柟搴擄紝濡侫pache Commons鐨凷erializationUtils绫伙紝鏉ュ疄鐜板璞$殑娣辨嫹璐濄€?/li>

绀轰緥浠g爜锛?/p>

import org.apache.commons.lang3.SerializationUtils;

public class MyClass {
    private int id;
    private String name;
    
    // 鏋勯€犳柟娉?/span>
    
    // getter鍜宻etter鏂规硶
    
    public MyClass deepCopy() {
        return SerializationUtils.clone(this);
    }
}

闇€瑕佹敞鎰忕殑鏄紝浠ヤ笂鏂规硶涓紝濡傛灉瀵硅薄鐨勬垚鍛樺彉閲忔槸涓嶅彲鍙樼被鍨嬶紙濡傚熀鏈暟鎹被鍨嬨€丼tring绛夛級锛屽垯涓嶉渶瑕佽繘琛屾繁鎷疯礉锛岀洿鎺ヨ祴鍊煎嵆鍙€傝€屽浜庡彲鍙樼被鍨嬶紙濡傛暟缁勩€侀泦鍚堛€佸叾浠栬嚜瀹氫箟绫荤瓑锛夛紝闇€瑕佽繘琛屾繁鎷疯礉锛屼互淇濊瘉鏂板璞′笌鍘熷璞$殑灞炴€у€间笉浼氱浉浜掑奖鍝嶃€?/p>

扫码添加客服微信