Non Inherited repeated annotations should not be searched from child Class

Deven You youdwei at
Wed Jun 5 05:26:16 UTC 2013

Hi All,

I didn't see this mail in the mailing list for a long time, so I just 
comment here to ensure everyone can receive this message.

Thanks a lot!
On 06/04/2013 09:37 PM, Deven You wrote:
> Hi All,
> I have written a test case[1] to show this problem. (If it is 
> confirmed a real bug, I will convert this test case to jtreg)
> My expected output is no any output but OpenJDK returns:
> @NonInheritedAnnotationRepeated(name=A)
> @NonInheritedAnnotationRepeated(name=B)
> The reasons are:
> 1. From the spec, Inherited means:
> Indicates that an annotation type is automatically inherited. If an 
> Inherited meta-annotation is present on an annotation type 
> declaration, and the user queries the annotation type on a class 
> declaration, and the class declaration has no annotation for this 
> type, then the class's superclass will automatically be queried for 
> the annotation type. This process will be repeated until an annotation 
> for this type is found, or the top of the class hierarchy (Object) is 
> reached. If no superclass has an annotation for this type, then the 
> query will indicate that the class in question has no such annotation.
> 2. For repeated annotations, according to the explanation of 1., If it 
> is non-inherited, querying Child class of this annotation should 
> return null.
> 3. Now the problem is if the repeated annotation is non-inherited, but 
> its container annotation is inherited, OpenJDK will return the 
> repeated annotations of Parent class if we query the Child class.
> It seems according to the Inherited semantics, even when container 
> annotation is inherited, we should not retrieve parent class 
> non-inherited repeated annotation from a child class.
> [1] 
> <> 

More information about the core-libs-dev mailing list