Non Inherited repeated annotations should not be searched from child Class (original) (raw)

Deven You youdwei at linux.vnet.ibm.com
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] http://cr.openjdk.java.net/~youdwei/ojdk-810/NonInheritedTest/ <http://cr.openjdk.java.net/%7Eyoudwei/ojdk-810/NonInheritedTest/>



More information about the core-libs-dev mailing list