1.浅いコピーと深いコピーの概念
⑴浅いコピー(浅いクローン)
コピーされたオブジェクトのすべての変数には元のオブジェクトと同じ値が含まれており、他のオブジェクトへの参照はすべて元のオブジェクトを指し続けます。つまり、浅いコピーは、参照しているオブジェクトではなく、問題のオブジェクトのみをコピーします。
⑵ディープコピー(ディープクローン)
コピーされたオブジェクトのすべての変数には、他のオブジェクトを参照する変数を除き、元のオブジェクトと同じ値が含まれます。他のオブジェクトを参照する変数は、元の参照オブジェクトではなく、コピーされた新しいオブジェクトを指します。つまり、ディープ コピーでは、コピー対象のオブジェクトが参照するすべてのオブジェクトがコピーされます。
2. Javaのclone()メソッド
⑴cloneメソッドはオブジェクトをコピーして呼び出し元に返します。一般的に言えば、 clone() メソッドは次の条件を満たします:
①任意のオブジェクト x に対して、x.clone() が存在します !=x//複製されたオブジェクトは元のオブジェクトと同じオブジェクトではありません
②任意のオブジェクト x に対して、x.clone() が存在しますx.clone().getClass()= =x.getClass()//クローンされたオブジェクトは元のオブジェクトと同じ型です
③ オブジェクトx)のequals()メソッドが確立されている場合。
⑵Java でのオブジェクトのクローン
①オブジェクトのコピーを取得するには、Object クラスの clone() メソッドを使用します。
②基本クラスの clone() メソッドを派生クラスでオーバーライドし、public として宣言します。
③派生クラスの clone() メソッドで super.clone() を呼び出します。
④派生クラスにCloneableインターフェースを実装します。
次のコードを見てください:
class Student 実装 Cloneable
{
文字列名;
This.name=name ; This.age=age; } publicオブジェクトのクローン() { Object o=null; tryo=(Student)super.clone();// Object の clone() は、コピーする
// オブジェクトを識別します。 C}
Catch (ClonenotSupportedException E)
{
System.out.println (e.tostring ())
}
Return o;
(String[] args) { Student s1=new Student("zhangsan",18); Student s2=(Student)s1.clone(); 上記は浅いコピーですJAVA コンテンツのディープ コピー。その他の関連コンテンツについては、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。