広告

Java : CloneNotSupportedException - API使用例

CloneNotSupportedException (Java SE 19 & JDK 19) の使用例まとめです。
だいたいのメソッドを網羅済みです。
API仕様のおともにどうぞ。


概要

オブジェクトを複製するためにObjectクラスのcloneメソッドが呼び出されたが、そのオブジェクトのクラスがCloneableインタフェースを実装していないことを示すためにスローされます。

クラス構成

CloneNotSupportedException は、Object.clone メソッドによる複製がサポートされていないときに発生するチェック例外です。
clone メソッドによる複製をサポートするには Cloneable を実装する必要があります。

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!

Cloneable を実装した例です。

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]

コンストラクタ

CloneNotSupportedException ()

詳細メッセージなしでCloneNotSupportedExceptionを構築します。

final var e = new CloneNotSupportedException();
System.out.println(e); // java.lang.CloneNotSupportedException

CloneNotSupportedException (String s)

指定された詳細メッセージを持つCloneNotSupportedExceptionを構築します。

final var e = new CloneNotSupportedException("abcde");
System.out.println(e); // java.lang.CloneNotSupportedException: abcde
System.out.println(e.getMessage()); // abcde

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。


関連記事

ページの先頭へ