Javaのcloneメソッドでオブジェクトをコピーするサンプルです。
目次
サンプル | 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) {
Employee c1 = new Employee();
c1.name = "鈴木";
c1.romaji = "suzuki";
Employee 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 Employee implements Cloneable{
String name;
String romaji;
@Override
public Employee clone() {
Employee a = new Employee();
a.name = this.name;
a.romaji = this.romaji;
return a;
}
}
6~8行目は、21行目のEmployeeクラスをインスタンス化して値をセットしています。
21行目のEmployeeクラスは、Cloneableインターフェースを実装しています。
10行目は、cloneメソッドです。
24~30行目のcloneメソッドがない場合はコンパイルエラーになります。
26~30行目は、コピーする内容を記述しています。
12,13行目は、コピー先の値を変更しています。
15~18行目でコピー先の値のみ変更されていることを確認しています。
関連の記事