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