Java : Cloneable (複製) - API使用例
Cloneable (Java SE 20 & JDK 20) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。
概要
Cloneableインタフェースは、複製(clone)が可能であることを表します。
インタフェース自体には、メソッドもフィールドもありません。
Cloneable を実装したクラスは、Object.clone による複製が可能となります。
record Sample(int num, String str) implements Cloneable {
@Override
public Sample clone() throws CloneNotSupportedException {
return (Sample) super.clone();
}
}
try {
final var sample = new Sample(100, "abc");
final var cloned = sample.clone();
System.out.println("Cloned! : " + cloned);
} catch (CloneNotSupportedException e) {
System.out.println("CloneNotSupportedException!");
}
// 結果
// ↓
//Cloned! : Sample[num=100, str=abc]
Cloneable を実装していないクラスは、Object.clone を呼び出すと CloneNotSupportedException が発生します。
// implements Cloneable なしです。
record Sample(int num, String str) {
@Override
public Sample clone() throws CloneNotSupportedException {
return (Sample) super.clone();
}
}
try {
final var sample = new Sample(100, "abc");
final var cloned = sample.clone();
System.out.println("Cloned! : " + cloned);
} catch (CloneNotSupportedException e) {
System.out.println("CloneNotSupportedException!");
}
// 結果
// ↓
//CloneNotSupportedException!