この記事では、Java でオブジェクトをコピーする方法を説明します。
Java でオブジェクトをコピーするにはどうすればよいですか?
Java では、次の方法を使用してオブジェクトをコピーできます。
「」内のすべてのクラスにアクセスします。 java.util ” パッケージを参照してから、例に進みます。
輸入 ジャワ。 ユーティリティ 。 *;
アプローチ 1: 「コピー コンストラクター」を使用して Java でオブジェクトをコピーする
” コピーコンストラクター 」は、以前に作成した同じクラス オブジェクトを参照してオブジェクトを作成/定義します。
例
次の例では、「コピー コンストラクター」を適用してオブジェクトをコピーします。
公共 クラス コピーオブジェクト {
整数 ID ;
弦 街 ;
コピーオブジェクト ( 整数 ID 、 弦 街 ) {
これ 。 ID = ID ;
これ 。 街 = 街 ; }
コピーオブジェクト ( CopyObject オブジェクト ) {
これ 。 ID = 物体。 ID ;
これ 。 街 = 物体。 街 ; }
公共 空所 画面 ( ) {
システム。 外 。 プリントイン ( 「ID→」 + これ 。 ID ) ;
システム。 外 。 プリントイン ( 「都市→」 + これ 。 街 ) ; }
公共 静的 空所 主要 ( 弦 [ 】 引数 ) {
スキャナ入力 = 新しい スキャナー ( システム。 の ) ;
システム。 外 。 プリントイン ( 「IDを入力してください:」 ) ;
整数 ID = 入力。 nextInt ( ) ;
システム。 外 。 プリントイン ( 「街に入ってください:」 ) ;
弦 街 = 入力。 次 ( ) ;
CopyObject オブジェクト 1 = 新しい コピーオブジェクト ( ID 、 街 ) ;
CopyObject オブジェクト 2 = 新しい コピーオブジェクト ( オブジェクト1 ) ;
システム。 外 。 プリントイン ( 「デフォルトのオブジェクト ->」 ) ;
オブジェクト1。 画面 ( ) ;
システム。 外 。 プリントイン ( 「コピーされたオブジェクト ->」 ) ;
オブジェクト2。 画面 ( ) ;
入力。 近い ( ) ;
} }
上記のコード スニペットでは次のようになります。
- 「」という名前のクラスを作成します コピーオブジェクト ”。
- 指定されたクラスのメンバー変数を指定します。
- その後、「」を介して、渡された値を指定された変数に割り当てるパラメーター化されたクラス コンストラクターを作成します。 これ ”。
- ここで、「」を作成します。 コピーコンストラクター 」は、後で引数として渡される、すでに作成されたクラス型オブジェクトをパラメータとして受け取ります。
- また、関数「」を定義します。 画面() 」は、渡されたオブジェクトの値を表示します。
- の中に ' 主要() ” メソッドで、ユーザーが「」経由で入力できるようにする「Scanner」オブジェクトを作成します。 システムイン ”パラメータ。
- また、「」を関連付けます。 nextInt() ' と ' 次() 」メソッドを使用して、それぞれ整数と文字列のユーザー入力を受け取ります。
- 「」経由でクラスオブジェクトを作成します。 新しい ” キーワードと” CopyObject() ” ユーザー入力値を引数として持つコンストラクター。
- また、クラスコピーコンストラクタを参照して、作成したオブジェクトを引数とするコピーオブジェクトを作成し、コピーした内容を返します。
- 最後に、「」を呼び出します。 画面() 」関数を使用して、渡されたユーザー入力値を表示し、「スキャナー」を閉じます。
出力
この出力では、コピー オブジェクトが作成され、それに応じて表示されることが暗示されています。
アプローチ 2: Java で「clone()」メソッドを使用してオブジェクトをコピーする
” クローン() ”の方法” java.lang.オブジェクト ” クラスはオブジェクトをパラメータとして受け取り、そのコピーを作成して渡します。このメソッドは、既に作成されている(コピーする必要がある)オブジェクトと「clone()」メソッドを参照することで、オブジェクトをコピーするために実装できます。
構文
物体。 クローン ( )このメソッドはオブジェクトのコピーを提供し、「 CloneNotSupportedException 」 オブジェクトのクラスが「Cloneable」インターフェイスを実装/適用していない場合。
例
以下のコード行を確認してください。
整数 ID ;
弦 街 ;
コピーオブジェクト ( 整数 ID 、 弦 街 ) {
これ 。 ID = ID ;
これ 。 街 = 街 ;
}
公共 空所 画面 ( ) {
システム。 外 。 プリントイン ( 「ID→」 + これ 。 ID ) ;
システム。 外 。 プリントイン ( 「都市→」 + これ 。 街 ) ;
}
公共 静的 空所 主要 ( 弦 [ 】 引数 ) 投げる CloneNotSupportedException {
スキャナ入力 = 新しい スキャナー ( システム。 の ) ;
システム。 外 。 プリントイン ( 「IDを入力してください:」 ) ;
整数 ID = 入力。 nextInt ( ) ;
システム。 外 。 プリントイン ( 「街に入ってください:」 ) ;
弦 街 = 入力。 次 ( ) ;
CopyObject オブジェクト 1 = 新しい コピーオブジェクト ( ID 、 街 ) ;
システム。 外 。 プリントイン ( 「デフォルトのオブジェクト ->」 ) ;
オブジェクト1。 画面 ( ) ;
システム。 外 。 プリントイン ( 「コピーされたオブジェクト ->」 ) ;
CopyObject オブジェクト 2 = ( コピーオブジェクト ) オブジェクト1。 クローン ( ) ;
オブジェクト2。 画面 ( ) ;
入力。 近い ( ) ;
} }
上記のコード ブロックに従って、以下の手順を実行します。
- クラスの定義、メンバー変数の指定、パラメーター化されたクラス コンストラクターの作成 (渡された値の割り当て)、および値を表示する関数の定義についてそれぞれ説明したアプローチを思い出してください。
- 今 ' 主要() 」の場合も同様に、ユーザーが値を入力し、作成されたクラス オブジェクトにこれらの値を渡し、対応する関数を介して表示します。
- その後、「 クローン() 」メソッドが有効となり、作成済みのオブジェクトに関連付けられてコピーオブジェクトが作成されます。
- 最後に、説明した関数を使用して、コピーしたオブジェクトの内容も表示します。
出力
この結果では、ユーザー入力値が同じ結果で 2 回返され、クラス オブジェクトが適切にコピーされていることを確認できます。
結論
オブジェクトは Java で「」を使用してコピーできます。 コピーコンストラクター '、 または ' クローン() ' 方法。前者の方法では、既に作成されているオブジェクトをコピー コンストラクターの引数として取得して、オブジェクトをコピーします。後者のアプローチは、作成されたクラス オブジェクトに直接関連付けられます。この記事では、Java でオブジェクトをコピーする方法を説明しました。