A simpler model for repeating annotations

Paul Benedict pbenedict at apache.org
Mon Jan 7 10:32:56 PST 2013


I agree that "getAll" is very nebulous and does not explain why the
legacy methods do not return "all".

Paul

On Mon, Jan 7, 2013 at 10:55 AM, michael keith <michael.keith at oracle.com> wrote:
> Thanks for the update, Alex. I like the direction this is going in.
>
> Since the get[Declared]Annotations(Class) methods are semantically different
> from the others they do deserve something different in their names to
> indicate it. However, given that the javadoc of the lagacy
> get[Declared]Annotations() methods state simply "Returns *all* annotations
> [directly] present on this element" (emphasis added) I am not sure that
> adding "All" to the semantically different get[Declared]Annotations(Class)
> pair is going to be a very good differentiator. Maybe "multiple" could be
> used in a different way, for example: get[Declared]AnnotationsWithMultiples?
>
> Also, I was just wondering if the getDeclaredAnnotation(Class) method will
> be considered a backfilled "new legacy" method and have similar semantics to
> getAnnotation(Class), or will it look through? If it looks through then it
> should be renamed as well and we might want to reconsider what the name of
> the method variant is.
>
> -Mike
>
> On 02/01/2013 8:46 PM, Alex Buckley wrote:
>>
>> Having spent today writing out the expected behavior of core reflection
>> methods, I'm sympathetic to the idea that get[Declared]Annotations(Class)
>> should be more clearly distinguished. I've avoided the term "repeating" in
>> API names since repetition is not really the point - the point is multiple
>> applications of the same annotation type, but "multiple" has its own
>> downsides since there may only be one annotation for the new methods to
>> return. I'd favor something more like getAll[Declared]Annotations(Class).
>> Comments welcome.
>>
>> Alex
>>
>> On 1/2/2013 7:32 AM, Paul Benedict wrote:
>>>
>>> BTW, I read something by Remi a few days back that was quite
>>> interesting. It was from another thread. He said that correct method
>>> overloading is not supposed to change behavior. Given that bit of
>>> wisdom, that's why I recommend a renaming here. Behavior is changing,
>>> thus a new name should be given.
>>>
>>> On Wed, Jan 2, 2013 at 9:22 AM, Paul Benedict <pbenedict at apache.org>
>>> wrote:
>>>>
>>>> I like the new proposal better. Yet, there's one thing that bothers
>>>> me, which is the naming of get[Declared]Annotations(Foo.class). It's
>>>> way too easy to look at the API and miss the difference in behavior
>>>> here. I propose giving it this name:
>>>> get[Declared]RepeatingAnnotations(Foo.class) -- and do the same for
>>>> language model's new typed method.
>>>>
>>>> Paul



More information about the enhanced-metadata-spec-discuss mailing list