Java は最も広く使用されているプログラミング言語の 1 つであり、幅広い機能が備わっています。 Java のオブジェクトはタスクを完了するために使用されます。オブジェクトの作成、変更、移動、それぞれのメソッドの呼び出しなどを行います。ご存知のとおり、オブジェクトへの参照は Java に保存されます。したがって、同じオブジェクトを指す 2 つの参照がある場合、一方の変更はもう一方の同じ変更に完全に反映されます。さて、この要素が常に有利に働くとは限りません。そのため、クローン作成はそのような状況を阻止するための解決策です。言い換えれば、そのようなオブジェクトの正確なレプリカを作成することは、Java ではオブジェクト クローン作成として知られています。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
定義上、オブジェクトのクローン作成は、同様の状態の元のオブジェクトの正確なコピーを作成するプロセスです。クローンを作成する場合、すべてのプロパティは新しくクローンされたオブジェクトに引き継がれますが、これらのプロパティは必要に応じて変更または操作できます。 clone() メソッドは Object クラスで定義する必要があります。オブジェクトのクローンを作成するクラスには、java.lang.A クローン可能インターフェースの実装が必須です。 Cloneable インターフェイスの実装に失敗した場合、例外がスローされます。次に、オブジェクトの複製の構文を見てみましょう。
構文:
protected Object clone() throws CloneNotSupportedException
クラス Object の場合、特定のクローン作成操作は clone メソッドによって実行されます。このメソッドは、クラスの正確な複製を作成し、オブジェクトのフィールドの内容ですべてのフィールドを初期化します。 Cloneable インターフェイスが前述のオブジェクトのクラスによって実装されていない場合、「CloneNotSupportedException」がスローされます。すべてのアレイは Cloneable インターフェイスを実装していると見なされます。ここでは、Cloneable インターフェイスは Object クラスに実装されていません。したがって、オブジェクトに対して clone メソッドを呼び出すと、実行時エラーがスローされます。
デモによって clone() メソッドの動作を理解しましょう。
コード:
class obj_clone implements Cloneable{ int phone_code; String f_name; obj_clone(int phone_code,String f_name){ this.phone_code=phone_code; this.f_name=f_name; } public Object clone()throws CloneNotSupportedException{ return super.clone(); } public static void main(String args[]){ try{ obj_clone s1=new obj_clone(99,"sulaksh"); obj_clone s2=(obj_clone)s1.clone(); System.out.println(s1.phone_code+" "+s1.f_name); System.out.println(s2.phone_code+" "+s2.f_name); }catch(CloneNotSupportedException c){} } }
コードの説明: ご覧のとおり、クラスを初期化し、cloneable を実装しました。ここでは、オブジェクト内の clone() を使用して、実際のクラスが cloneable を実装しているかどうかがチェックされ、コピーの作成に進みます。次に、整数データ型の電話番号と文字列データ型の名という 2 つの変数が得られます。次に、クラス obj_clone のコンストラクターと .this キーワードを含む変数を作成しました。ご覧のとおり、オブジェクトには clone() メソッドと、前に説明した例外 CloneNotSupportedException が含まれています。さらに、ここで super.clone() はエラー CloneNotSupportedException をスローする可能性がありますが、これは後で検出します。
次にメインクラスがあり、その中のすべてに try-catch を使用しています。次に、クラスのオブジェクトを s1 および s2 として作成しました。最初のオブジェクトである s1 の両方のパラメータを渡し、s1 を s2 に複製する clone() メソッドを実装しました。最後に、2 つの出力 print ステートメントがあります。 try ブロックの外には、前述した例外を備えた catch ブロックがあります。この例の 8th 行では、構文部分で説明したように clone() を実装しました。上記のプログラムを実行すると、「99sulaksh 99sulaksh」として出力が表示されます。出力については、以下に添付されたスクリーンショットを参照してください。
出力:
オブジェクトのクローン作成とは何か、そしてそれがどのように行われるかを理解したので、Java がサポートするクローン作成のタイプを理解しましょう。
ここで、オブジェクトの複製の長所と短所を理解しましょう。
すべてまたはすべてのメソッドには独自の制限と機能があることを理解した上で、クローン作成の利点を以下に示します。
前に述べたように、どのメソッドにも制限と機能があります。ここで、Clone() の欠点を理解しましょう。
clone() やその他のメソッドの長所と短所を適切に理解すれば、このような素晴らしいメソッドや関数の実装はプログラマにとって大きなメリットとなります。
clone() とは何か、その機能と用途を理解しました。ディープ クローン作成とシャロー クローン作成の違い、および遅延クローン作成。浅いクローニングはフィールドのみをコピーしますが、ディープ クローニングはフィールドと値をコピーするため、必要に応じて実装できます。一方、Lazy Copy はこれら両方を組み合わせたものです。クローンのメリットとデメリットも分かりました()。
以上がJava でのオブジェクトのクローン作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。