Hi Joe,

Thanks for the reply and hinting me the right direction!

I had seen these methods but was missing the down-cast to
AnnotatedParameterizedType which gives access to
getAnnotatedActualTypeArguments(). In case it's helpful to others, that's
what I ended up with:

    Field myField = ...;

    // List<String>
    AnnotatedParameterizedType type = (AnnotatedParameterizedType)
declaredField.getAnnotatedType();

    // String
    AnnotatedType typeArg = type.getAnnotatedActualTypeArguments()[0];

    // @NotNull
    Annotation annotation = typeArg.getAnnotations()[0];

Thanks again,

--Gunnar



2014-03-13 15:39 GMT+01:00 Joe Darcy <joe.da...@oracle.com>:

> Hello,
>
> See the methods in java.lang.reflect named "getAnnotedFoo" which return
> java.lang.reflect.AnnotedType or a subinterface.
>
> -Joe
>
>
> On 3/13/2014 6:24 AM, Gunnar Morling wrote:
>
>> Hi,
>>
>> Is it possible to retrieve type annotations (as defined by JSR 308) using
>> reflection at runtime? E.g. I would like to retrieve the @NotNull
>> annotation from a member declared like this:
>>
>>      private List<@NotNull String> names;
>>
>> I assumed that this would be possible using reflection, but I couldn't
>> find
>> a way to do it. Is there an example for this somewhere? Or are type
>> annotations only meant to be accessed by compile-time tools such as the
>> Checker framework?
>>
>> I noticed that the byte code of my class contains information about the
>> annotation, so I guess one could access it by examining the class file if
>> it's really not possible via the reflection API.
>>
>> Many thanks,
>>
>> --Gunnar
>>
>
>

Reply via email to