広告

Java : ArrayStoreException - API使用例

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


概要

不正な型のオブジェクトをオブジェクトの配列に格納しようとしたことを示すためにスローされます。

クラス構成

Java の配列は、

  • サブクラスの配列 → ベースクラスの配列

へと代入できます。

サブクラス( String 型) と ベースクラス( Object 型) の例で見てみましょう。

String[] strings = new String[]{"aaa", "bbb", "ccc"};
System.out.println(Arrays.toString(strings)); // [aaa, bbb, ccc]

Object[] objects = strings;
objects[0] = "XXX";
objects[1] = "YYY";

System.out.println(Arrays.toString(strings)); // [XXX, YYY, ccc]

objects 変数は Object 型の配列ですが、文字列(String) を代入することができます。

しかし、Object 型だからといって、String 以外のオブジェクトを代入することはできません。
objects 変数は String 型の配列でもあるからです。型に矛盾が発生してしまうわけですね。

そのときに発生する非チェック例外が ArrayStoreException です。

try {
    objects[2] = Integer.valueOf(123);
} catch (ArrayStoreException e) {
    System.out.println("ArrayStoreException! : " + e.getMessage());
}

// 結果
// ↓
//ArrayStoreException! : java.lang.Integer

ArrayStoreException については Java 言語仕様にも記載があるので、そちらもご参照ください。(英語になります)


コンストラクタ

ArrayStoreException ()

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

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

ArrayStoreException (String s)

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

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

Throwableで宣言されたメソッド

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

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


関連記事

ページの先頭へ