Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8202473

(ann) A type variable with multiple bounds does not correctly place type annotation

XMLWordPrintable

      A DESCRIPTION OF THE PROBLEM :
      If two type annotations are placed on two bounds, the reflection API does not consider the bound's index such that an exception is thrown when the reflection API parses the annotations.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Run the example code.

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      No exception is thrown and the type annotations are returned correctly.
      ACTUAL -
      An exception is thrown.

      ---------- BEGIN SOURCE ----------
      public class Foo<T extends Callable<@Foo.SampleTypeAnnotation ?> & List<@Foo.SampleTypeAnnotation ?>> {

          @Retention(RetentionPolicy.RUNTIME)
          @Target(ElementType.TYPE_USE)
          @interface SampleTypeAnnotation { }

          public static void main(String[] args) throws Exception {
              TypeVariable<Class<Foo>>[] variables = Foo.class.getTypeParameters();
              AnnotatedType[] bounds = variables[0].getAnnotatedBounds();
              System.out.println(bounds[0] instanceof AnnotatedParameterizedType);
              AnnotatedParameterizedType callable = (AnnotatedParameterizedType) bounds[0];
              callable.getAnnotatedActualTypeArguments(); // throws exception
          }
      }

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      None.

      FREQUENCY : always


            vromero Vicente Arturo Romero Zaldivar
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated:
              Resolved: