ホームページ >Java >&#&チュートリアル >Java での clone() の使用例の共有

Java での clone() の使用例の共有

黄舟
黄舟オリジナル
2017-09-28 09:38:311438ブラウズ

この記事では、主に 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。