Java cloneメソッドでコピーするサンプル

Javaのcloneメソッドでオブジェクトをコピーするサンプルです。

目次

サンプル cloneメソッド

cloneメソッド

protected Object clone() throws CloneNotSupportedException
  • Objectクラスのcloneメソッドです。
  • 使用時はオーバーライドします。コピーの内容は独自に作成します。
  • cloneの対象となるクラスには、Cloneableインターフェースを実装します。
  • 以下は、OracleのJava8のObjectクラスのcloneメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html#clone--

オブジェクトをcloneするサンプルです。

package test1;

public class Test1 {
	public static void main(String[] args) {

		Syain c1 = new Syain();
		c1.name = "鈴木";
		c1.romaji = "suzuki";
		
		Syain c2 = c1.clone();
		
		c2.name = "田中";
		c2.romaji = "tanaka";
		
		System.out.println(c1.name); // 鈴木
		System.out.println(c1.romaji); // suzuki
		System.out.println(c2.name); // 田中
		System.out.println(c2.romaji); // tanaka
 	}
}
class Syain  implements Cloneable{
	String name;
	String romaji;
	@Override
	public Syain clone() {
		Syain a = new Syain();
		a.name = this.name;
		a.romaji = this.romaji;
		return a;
	}
}

6~8行目は、21行目のSyainクラスをインスタンス化して値をセットしています。
21行目のSyainクラスは、Cloneableインターフェースを実装しています。
10行目は、cloneメソッドです。
24~30行目のcloneメソッドがない場合はコンパイルエラーになります。
26~30行目は、コピーする内容を記述しています。
12,13行目は、コピー先の値を変更しています。
15~18行目でコピー先の値のみ変更されていることを確認しています。

関連の記事

Java equalsメソッドをオーバーライドするサンプル
Java クラスにtoStringメソッドを追加する意味

△上に戻る