CSR :
|
Summary ------- Update the specification of `Class.getCanonicalName` method to explicitly describe the behavior for arrays. Problem ------- Unlike other `Class` -> name methods in `java.lang.Class`, `Class.getCanonicalName` does not describe how arrays are handled. Solution -------- Add explicit discussion of arrays (and primitive types, for good measure). Specification ------------- --- a/src/java.base/share/classes/java/lang/Class.java +++ b/src/java.base/share/classes/java/lang/Class.java @@ -1732,8 +1732,18 @@ public final class Class<T> implements java.io.Serializable, * <li>an array whose component type does not have a canonical name</li> * </ul> * + * The canonical name for a primitive class is the keyword for the + * corresponding primitive type ({@code byte}, {@code short}, + * {@code char}, {@code int}, and so on). + * + * <p>An array type has a canonical name if and only if its + * component type has a canonical name. When an array type has a + * canonical name, it is equal to the canonical name of the + * component type followed by "{@code []}". + * * @return the canonical name of the underlying class if it exists, and * {@code null} otherwise. + * @jls 6.7 Fully Qualified Names and Canonical Names * @since 1.5 */ public String getCanonicalName() {