ホームページ >Java >&#&チュートリアル >Java での clone() の使用例の共有
この記事では、主に Java での clone() の使用に関する関連情報を紹介します。この記事が、clone() のクローン作成方法を習得するのに役立つことを願っています。 java メソッド
はじめに:
clone はコピーです。 Java 言語では、clone メソッドはオブジェクトによって呼び出されるため、オブジェクトがコピーされます。オブジェクトをコピーするには、まずソース オブジェクトと同じサイズのスペースを割り当て、このスペースに新しいオブジェクトを作成する必要があります。 Java 言語には次のようなものがあります:
1 new 演算子を使用してオブジェクトを作成する
2 clone メソッドを使用してオブジェクトをコピーする
それでは、これら 2 つのメソッドの類似点と相違点は何でしょうか?新しい演算子の本来の目的はメモリを割り当てることです。プログラムが new 演算子を実行するとき、まず new 演算子の背後にある型を調べます。これは、型を知ることによってのみ、割り当てるメモリ領域の量を知ることができるためです。メモリを割り当てた後、コンストラクターを呼び出してオブジェクトの各フィールドに値を入力します。このステップはオブジェクトの初期化と呼ばれます。コンストラクターが戻った後、オブジェクトが作成され、その参照 (アドレス) を外部に公開できます。この参照はオブジェクトを操作します。 clone の最初のステップは new と似ています。clone メソッドが呼び出されるとき、割り当てられるメモリはソース オブジェクト (つまり、clone メソッドを呼び出すオブジェクト) と同じになります。元のオブジェクトは新しいオブジェクトのフィールドに入力されるために使用されます。新しいオブジェクトのフィールドが入力された後、clone メソッドが戻り、新しい同一のオブジェクトが作成され、この新しいオブジェクトの参照を外部に公開することもできます。
package test; public class Cloneoo { public static void main(String[] args) { test t=new test(); t.changeInt(); System.out.println(t); try { test t1=(test) t.clone();//创建 System.out.println(t1); System.out.println(t1.getI()); } catch (CloneNotSupportedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } class test implements Cloneable{ private int i=0; public void setI(int i) { this.i = i; } public int getI() { return i; } public void changeInt(){ this.i=1; } @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub test t=null; t=(test) super.clone(); return t; } }
test.test@15db9742 test.test@6d06d69c 1
クラスにいくつかのオブジェクトが含まれている場合、ディープコピーする必要があります。つまり、オブジェクトをコピーした後、オブジェクト内の非基本型属性の clone メソッドを急いで呼び出します。ディープコピー。
cloneメソッドは浅いコピーを実行します
以上がJava での clone() の使用例の共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。