8268250: Class.arrayType() for a 255-d array throws undocumented IllegalArgumentException

Reviewed-by: sundar, alanb
This commit is contained in:
Joe Darcy 2022-02-17 17:12:40 +00:00
parent d0e11808fd
commit 4c7f8b49a4
2 changed files with 59 additions and 1 deletions

View file

@ -4485,12 +4485,21 @@ public final class Class<T> implements java.io.Serializable,
* Returns a {@code Class} for an array type whose component type
* is described by this {@linkplain Class}.
*
* @throws UnsupportedOperationException if this component type is {@linkplain
* Void#TYPE void} or if the number of dimensions of the resulting array
* type would exceed 255.
* @return a {@code Class} describing the array type
* @jvms 4.3.2 Field Descriptors
* @jvms 4.4.1 The {@code CONSTANT_Class_info} Structure
* @since 12
*/
@Override
public Class<?> arrayType() {
return Array.newInstance(this, 0).getClass();
try {
return Array.newInstance(this, 0).getClass();
} catch (IllegalArgumentException iae) {
throw new UnsupportedOperationException(iae);
}
}
/**