類的轉殖問題

2022-06-27 08:00:14 字數 883 閱讀 6671

object中有預設protected的clone()方法,此方法預設丟擲異常

protected native object clone() throws clonenotsupportedexception;

因為每個類直接或間接的父類都是object,因此它們都含有clone()方法,但是因為該方法是protected,所以都不能在類外進行訪問。

轉殖方法是淺拷貝,對於一些位址引用的成員屬性會複製同一位址,拷貝物件會對源物件造成影響,因此需要用到引用變數時要進行深拷貝。而深拷貝就是讓被引用物件也實現clone方法

實現淺拷貝步驟

被複製的類需要實現clonenable介面(不實現的話在呼叫clone方法會丟擲clonenotsupportedexception異常),此介面為標誌介面(不含任何方法)

覆蓋clone()方法,訪問修飾符設為public。方法中呼叫super.clone()方法得到需要的複製物件,(native為本地方法)

@override

public object clone() throws clonenotsupportedexception

//或者避免強轉,直接返回被拷貝的類

@override

public student clone() throws clonenotsupportedexception

深拷貝深轉殖需要重寫(override)object類的clone()方法,並且在方法內部呼叫持有物件的clone方法。

@override

public object clone() throws clonenotsupportedexception

關於轉殖列表的問題

首先我們看如下 def removedups l1,l2 假設l1,l2是列表,刪除l2 現的l1中的元素 for e1 in l1 if e1 in l2 l1.remove e1 l1 1,2,3,4 l2 1,2,5,6 removedups l1,l2 print l1 l1 這段 預期執行...

實現深轉殖工具類

public class cloneutils catch exception e return cloneobj 使用該工具類的物件必須要實現serializable介面,否則是沒有辦法實現轉殖的。public class person implements serializable public...

php引用類和載入類,轉殖

class ren function clone r new ren 張三 男 轉殖 r1 clone r var dump r var dump r1 引用類,載入類 關於根路徑 php裡面 代表根路徑 指該檔案所在的磁碟比如d html裡面 代表根路徑 指伺服器資料夾 www include i...