29

JDK 16 でのIndexOutOfBoundsExceptionの実装をチェックしていたところ、longインデックスを持つ新しいコンストラクターが導入されていることに気付きました。

/**
 * Constructs a new {@code IndexOutOfBoundsException} class with an
 * argument indicating the illegal index.
 *
 * <p>The index is included in this exception's detail message.  The
 * exact presentation format of the detail message is unspecified.
 *
 * @param index the illegal index.
 * @since 16
 */
public IndexOutOfBoundsException(long index) {
    super("Index out of range: " + index);
}

私の知る限り、配列インデックスは通常int値であり、これは言語仕様セクション §10.4で確認されています。

int配列は値でインデックス付けする必要があります。shortbyte、またはchar値は、単項数値昇格 (§5.6) を受けて値になるため、インデックス値としても使用できintます。

longインデックス値を使用して配列コンポーネントにアクセスしようとすると、コンパイル エラーが発生します。

longこのインデックスコンストラクターがいつ(そしてなぜ)使用されるのか考えていますか?

4

3 に答える 3

29
于 2021-03-17T13:14:45.217 に答える