- 
    Bug 
- 
    Resolution: Duplicate
- 
     P4 P4
- 
    None
- 
    8u192
- 
        x86_64
- 
        generic
                    ADDITIONAL SYSTEM INFORMATION :
> java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (IcedTea 3.10.0) (build 1.8.0_191-b12 suse-1.1-x86_64)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
> /usr/lib64/jvm/java-11/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-suse-3.1-x8664)
OpenJDK 64-Bit Server VM (build 11.0.1+13-suse-3.1-x8664, mixed mode)
A DESCRIPTION OF THE PROBLEM :
If a field with a generic type is annotated with annotation with a parameter of type Class<?> and the value of a non-static inner class, getAnnotations crashes.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and execute code provided
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Should not crash. Should print the only annotation.
ACTUAL -
ClassCastException
---------- BEGIN SOURCE ----------
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Arrays;
@Retention( RetentionPolicy.RUNTIME )
@Target( ElementType.FIELD )
@interface A {
Class<?> clz();
}
public class AnnBug<T> {
@A( clz = Inner.class )
public T f;
class Inner {}
public static void main( String[] args ) throws NoSuchFieldException {
System.out.println( Arrays.toString( AnnBug.class.getField( "f" ).getAnnotations() ) );
}
}
---------- END SOURCE ----------
FREQUENCY : always
            
> java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (IcedTea 3.10.0) (build 1.8.0_191-b12 suse-1.1-x86_64)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
> /usr/lib64/jvm/java-11/bin/java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment (build 11.0.1+13-suse-3.1-x8664)
OpenJDK 64-Bit Server VM (build 11.0.1+13-suse-3.1-x8664, mixed mode)
A DESCRIPTION OF THE PROBLEM :
If a field with a generic type is annotated with annotation with a parameter of type Class<?> and the value of a non-static inner class, getAnnotations crashes.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Compile and execute code provided
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Should not crash. Should print the only annotation.
ACTUAL -
ClassCastException
---------- BEGIN SOURCE ----------
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Arrays;
@Retention( RetentionPolicy.RUNTIME )
@Target( ElementType.FIELD )
@interface A {
Class<?> clz();
}
public class AnnBug<T> {
@A( clz = Inner.class )
public T f;
class Inner {}
public static void main( String[] args ) throws NoSuchFieldException {
System.out.println( Arrays.toString( AnnBug.class.getField( "f" ).getAnnotations() ) );
}
}
---------- END SOURCE ----------
FREQUENCY : always
- duplicates
- 
                    JDK-8154270 javac wrongly rejects some class literals as annotation element values -           
- Closed
 
-