Open
Description
New to Java 8, the AnnotatedType class carries annotations bind to types in Generic expressions.
So if I write
@MaxLength(3) List<@NotNull Integer> myField;
I can get the @NotNull
annotation via something like:
Field f = MyClass.class.getDeclaredField("myField");
AnnotatedParameterizedType annType = (AnnotatedParameterizedType) field.getAnnotatedType();
AnnotatedType[] childAnnotatedTypes = annType.getAnnotatedActualTypeArguments();
But then I have to assume the parameter I want is the first in the returned array. But maybe I have something like
class MyFunnyList<T> implements List<@NotNull Integer> {}
// ...
private MyFunnyList<@Null String> myFunnyField;
Using ResolvedType
, I can call type.typeParametersFor(List.class).get(0)
to get the correct parameter type (Integer
rather than String
). It'd be nice to have also a way to retrieve the annotations associated with it (@NotNull
rather than @Null
). Note that this feature must not break support for Java 7, so some type of switch will probably need to be used.
Metadata
Metadata
Assignees
Labels
No labels