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行目でコピー先の値のみ変更されていることを確認しています。
関連の記事