JAVAの浅いコピーと深いコピー

黄舟
リリース: 2016-12-20 13:31:43
オリジナル
1401 人が閲覧しました

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;

try

o=(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) に注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!