Clarification on type use

Werner Dietl wdietl at gmail.com
Thu Apr 3 21:24:23 UTC 2014


Alex,

I agree that the annotation is legal in that location.
One point I'm not sure in is:

"The result with the current implementation is that javac produces a
RuntimeInvisibleAnnotations attribute for the class TypeUseTarget."

Should a TYPE_USE annotation always be in a
RuntimeInvisibleTYPEAnnotations attribute?
A TYPE annotation appears in the RuntimeInvisibleAnnotations
attribute, so I find the current behavior consistent.

cu, WMD.


On Thu, Apr 3, 2014 at 4:07 PM, Alex Buckley <alex.buckley at oracle.com> wrote:
> Yes. TYPE or TYPE_PARAMETER, actually.
>
>
> On 4/3/2014 1:05 PM, Paul Benedict wrote:
>>
>> I once heard someone say that TYPE_USE is a parent of TYPE. Thus,
>> wherever a valid TYPE can appear, a TYPE_USE would also be valid in the
>> same place. Right/wrong?
>>
>>
>> On Thu, Apr 3, 2014 at 2:27 PM, Alex Buckley <alex.buckley at oracle.com
>> <mailto:alex.buckley at oracle.com>> wrote:
>>
>>     Eric, I am on type-annotations-dev, you don't need to cc me every
>> time.
>>
>>     The TYPE_USE enum constant is specified in the javadoc for the
>>     j.l.a.ElementType enum type: "The constant TYPE_USE corresponds to
>>     the 15 type contexts in JLS 4.11, as well as to two declaration
>>     contexts: type declarations (including annotation type declarations)
>>     and type parameter declarations."  ["15" should be "16", there's a
>>     bug out for that.]
>>
>>     Alex
>>
>>     On 4/3/2014 9:19 AM, Eric McCorkle wrote:
>>
>>         The following is exerpted from the test
>>
>> langtools/test/tools/javac/__annotations/typeAnnotations/__TypeUseTarget.java:
>>
>>
>>         @A
>>         class TypeUseTarget<K extends @A Object> {
>>         ...
>>         }
>>
>>         @Target(ElementType.TYPE_USE)
>>         @interface A { }
>>
>>
>>         The first use of A seems to be on the class TypeUseTarget.  The
>>         result
>>         with the current implementation is that javac produces a
>>         RuntimeInvisibleAnnotations attribute for the class TypeUseTarget.
>>
>>         But is this valid?  I can't seem to find anything in the type
>>         annotations spec that suggests that an annotation with a
>>         TYPE_USE target
>>         can wind up being a regular annotation on a class (or interface).
>>
>>
>>
>>
>> --
>> Cheers,
>> Paul



-- 
http://www.google.com/profiles/wdietl


More information about the type-annotations-dev mailing list