JDK 8 code review request for 8014836: Have GenericDeclaration extend AnnotatedElement

Joe Darcy joe.darcy at oracle.com
Mon May 20 21:10:13 UTC 2013


Hello,

Please review the patch below which implements

     8014836: Have GenericDeclaration extend AnnotatedElement

All the existing implementations of GenericDeclaration in the JDK 
already implement AnnotatedElement. Some code in java.lang.Class needed 
to be adjusted slightly since AnnotatedElement declares a default method 
and calling an interface's default method in an implementing class has 
to go through the direct interface type.

Thanks,

-Joe

--- a/src/share/classes/java/lang/Class.java    Mon May 20 11:56:46 2013 
-0700
+++ b/src/share/classes/java/lang/Class.java    Mon May 20 14:07:15 2013 
-0700
@@ -28,6 +28,7 @@
  import java.lang.reflect.AnnotatedElement;
  import java.lang.reflect.Array;
  import java.lang.reflect.GenericArrayType;
+import java.lang.reflect.GenericDeclaration;
  import java.lang.reflect.Member;
  import java.lang.reflect.Field;
  import java.lang.reflect.Executable;
@@ -115,9 +116,9 @@
   * @since   JDK1.0
   */
  public final class Class<T> implements java.io.Serializable,
-                              java.lang.reflect.GenericDeclaration,
-                              java.lang.reflect.Type,
-                              java.lang.reflect.AnnotatedElement {
+                              GenericDeclaration,
+                              Type,
+                              AnnotatedElement {
      private static final int ANNOTATION= 0x00002000;
      private static final int ENUM      = 0x00004000;
      private static final int SYNTHETIC = 0x00001000;
@@ -3182,7 +3183,7 @@
       */
      @Override
      public boolean isAnnotationPresent(Class<? extends Annotation> 
annotationClass) {
-        return AnnotatedElement.super.isAnnotationPresent(annotationClass);
+        return 
GenericDeclaration.super.isAnnotationPresent(annotationClass);
      }

      /**
diff -r 6a9148865139 
src/share/classes/java/lang/reflect/GenericDeclaration.java
--- a/src/share/classes/java/lang/reflect/GenericDeclaration.java  Mon 
May 20 11:56:46 2013 -0700
+++ b/src/share/classes/java/lang/reflect/GenericDeclaration.java  Mon 
May 20 14:07:15 2013 -0700
@@ -1,5 +1,5 @@
  /*
- * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights 
reserved.
+ * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights 
reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,7 @@
   *
   * @since 1.5
   */
-public interface GenericDeclaration {
+public interface GenericDeclaration extends AnnotatedElement {
      /**
       * Returns an array of {@code TypeVariable} objects that
       * represent the type variables declared by the generic




More information about the core-libs-dev mailing list