Hello,

Please review the patch below to address

    JDK-8227202: clarify Class.isEnum() doc

To condense a long story (see https://blogs.oracle.com/darcy/so-you-want-to-change-the-java-programming-language), there are cases where the Class object of an enum constant is *not* the Class object of the declaring enum type. While this is the specified behavior, it can be surprising and the paragraph of added text is intended to explain the situation.

Thanks,

-Joe


--- a/src/java.base/share/classes/java/lang/Class.java    Wed Jul 03 15:46:48 2019 -0400 +++ b/src/java.base/share/classes/java/lang/Class.java    Wed Jul 03 14:22:28 2019 -0700
@@ -3491,9 +3491,16 @@
      * Returns true if and only if this class was declared as an enum in the
      * source code.
      *
+     * Note that if an enum constant is declared with a class body,
+     * the class of that enum constant is an anonymous class and
+     * <em>not</em> the class of the declaring enum type. The {@link
+     * Enum.getDeclaringClass} method can be used to get class of the
+     * enum type declaring an enum constant.
+     *
      * @return true if and only if this class was declared as an enum in the
      *     source code
      * @since 1.5
+     * @jls 8.9.1 Enum Constants
      */
     public boolean isEnum() {
         // An enum must both directly extend java.lang.Enum and have

Reply via email to