[type-annos-observers] ordering of annotated array brackets
Michael Ernst
mernst at cs.washington.edu
Mon Mar 3 13:55:04 PST 2014
> So in a field declaration with two declarators, arr1 and arr2:
>
> @A T @B [] arr1, arr2 @C [];
>
> the extra dimension in the second declarator should not affect the type
> or annotations of the first declarator. Yet you seem to be saying that
> arr2's extra dimension affects the type of arr1?!
I didn't intend to say that.
Can you explain how you think I'm saying that arr2's extra dimension
affects the type of arr1?
-Mike
> Subject: Re: [type-annos-observers] ordering of annotated array brackets
> From: Alex Buckley <alex.buckley at oracle.com>
> To: type-annotations-spec-experts
> <type-annotations-spec-experts at openjdk.java.net>
> Date: Tue, 04 Mar 2014 13:47:10 -0800
>
> On 3/4/2014 9:29 AM, Michael Ernst wrote:
>> There was some text in the old specification about this issue. It was
>> commented out in September 2011 for brevity, but not because of
>> controversy.
>>
>> In this (deprecated but legal) syntax, in each component you read
>> left-to-right, like this:
>>
>> @English String @NonNull [] [] [] arr1, arr2 @Length(10) [] []
>> [];
>> 3-------------> 2--------------->
>> 1------------------>
>>
>> As another example, consider
>>
>> @A T @B [] arr1, arr2 @C [];
>>
>> arr1 should have the same annotations as the elements of arr2. So,
>>
>> @A T @B [] arr2 @C [];
>>
>> should be equivalent to
>>
>> @A T @C [] @B [] arr2;
>
> I don't understand this at all. Allow me to refer to section 2.2.1 of
> java-annotation-design.pdf:
>
> --
> An important property of this syntax is that, in two declarations that
> differ only in the number of array levels, the annotations mean the same
> thing. For example, var1 has the same annotations as the elements of
> arr2:
> @NonNull String var1;
> @NonNull String[] arr2;
> because in each case @NonNull refers to the String, not the array. This
> consistency is especially important since the two variables may appear
> in a single declaration:
> @NonNull String var1, arr2[];
> --
>
> So in a field declaration with two declarators, arr1 and arr2:
>
> @A T @B [] arr1, arr2 @C [];
>
> the extra dimension in the second declarator should not affect the type
> or annotations of the first declarator. Yet you seem to be saying that
> arr2's extra dimension affects the type of arr1?!
>
> Alex
More information about the type-annotations-spec-experts
mailing list