Javaでのクローンは、同じサイズとソースオブジェクトのメモリ空間を割り当てることによって、オブジェクトをコピーし、新しいオブジェクトを作成するために使用され、その後、彼はどのような違いがありますか=?
=オブジェクトのコピーによって実現:
@data @NoArgsConstructor @AllArgsConstructor @ToString パブリッククラスの学生は、Cloneableを実装して、{ プライベートint型のIDを、 プライベート文字列名; プライベートint型のセックス。 @Override 保護オブジェクトのクローン()CloneNotSupportedException {スロー リターンsuper.cloneを()。 } }
パブリック静的無効メイン(文字列[] args){ 学生学生=新しい学生(1001 "SAM"、1); 学生STUDENT1 =学生。 System.out.println(学生== STUDENT1)。 student1.setName( "zhangsan"); System.out.println(student.toString())。 }
結果:
真の 学生(ID = 1001、名前= zhangsan、性別= 1)
ビュー、学生と同じオブジェクトへのSTUDENT1ポイントの結果の観点から、私は、生徒データにつながる同じオブジェクトへの学生のポイントが変更されたため、データSTUDENT1を変更したが、
今、私は)ソースオブジェクトとターゲットオブジェクト間の任意の関連付けをしたくない、我々はクローンを(使用することができ、ソースオブジェクトのコピーを作成したいです
クローン()オブジェクトのコピーを実装します。
公共の静的な無効メイン(文字列[]引数)は例外{スロー 学生学生=新しい生徒(1001、「SAM」、1)。 学生STUDENT1 =(学生)student.clone(); System.out.println(学生== STUDENT1)。 student1.setName( "zhangsan"); System.out.println(student.toString())。 }
結果:
偽 学生(ID = 1001、名前= SAM、性別= 1)
ビューの結果の観点から、我々はクローン()でこのことを知って、オブジェクトを作成し、オブジェクトがソースに関連付けられていません
PS:オブジェクトのクローンを作成し、オブジェクトのコンストラクタを呼び出すことはありません。
気づくことが、次の記事では、完璧なクローンの内容を含む深いコピーと浅いコピーを、書き込まれます