JDK 14 RFR of JDK-8227202: clarify Class.isEnum() doc
Joe Darcy
joe.darcy at oracle.com
Wed Jul 3 21:24:52 UTC 2019
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
More information about the core-libs-dev
mailing list