Gets all fields with a specific annotation on the field or the getter
up vote
0
down vote
favorite
I need to use some way to get all fields that are annotated with a specific annotation. The annotation may be at the field or the getter (of a super class), like
public MyClass
@MyAnnotation
String myName;
int myAge;
@MyAnnotation
int getMyAge() return myAge;
So I need Field getAllAnnotatedFields(MyClass.class, MyAnnotation.class)
.
I could write that method on my own, but I wonder, if there exists some util method. (I cannot found one in Apache commons, Guava or Google reflections).
java reflection annotations
add a comment |
up vote
0
down vote
favorite
I need to use some way to get all fields that are annotated with a specific annotation. The annotation may be at the field or the getter (of a super class), like
public MyClass
@MyAnnotation
String myName;
int myAge;
@MyAnnotation
int getMyAge() return myAge;
So I need Field getAllAnnotatedFields(MyClass.class, MyAnnotation.class)
.
I could write that method on my own, but I wonder, if there exists some util method. (I cannot found one in Apache commons, Guava or Google reflections).
java reflection annotations
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
1
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I need to use some way to get all fields that are annotated with a specific annotation. The annotation may be at the field or the getter (of a super class), like
public MyClass
@MyAnnotation
String myName;
int myAge;
@MyAnnotation
int getMyAge() return myAge;
So I need Field getAllAnnotatedFields(MyClass.class, MyAnnotation.class)
.
I could write that method on my own, but I wonder, if there exists some util method. (I cannot found one in Apache commons, Guava or Google reflections).
java reflection annotations
I need to use some way to get all fields that are annotated with a specific annotation. The annotation may be at the field or the getter (of a super class), like
public MyClass
@MyAnnotation
String myName;
int myAge;
@MyAnnotation
int getMyAge() return myAge;
So I need Field getAllAnnotatedFields(MyClass.class, MyAnnotation.class)
.
I could write that method on my own, but I wonder, if there exists some util method. (I cannot found one in Apache commons, Guava or Google reflections).
java reflection annotations
java reflection annotations
asked Nov 10 at 20:45
t777
1,17852440
1,17852440
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
1
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02
add a comment |
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
1
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
1
1
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
This is my solution using Apache commons:
public static Collection<String> getPropertyNamesListWithAnnotation(Class<?> targetClass, Class<? extends Annotation> annotationClass)
Set<String> fieldNamesWithAnnotation = FieldUtils.getFieldsListWithAnnotation(targetClass, annotationClass).stream().map(Field::getName).collect(Collectors.toSet());
fieldNamesWithAnnotation.addAll(MethodUtils.getMethodsListWithAnnotation(targetClass, annotationClass, true, false).stream()
.map(Method::getName)
.filter(LangHelper::isValidGetterOrSetter)
.map(name -> StringUtils.uncapitalize(RegExUtils.replaceFirst(name, "^(get
private static boolean isValidGetterOrSetter(String methodName)
if (!StringUtils.startsWithAny(methodName, "get", "set", "is"))
LOG.warn("Annotated method is no valid getter or setter: '' -> Ignoring", methodName);
return false;
return true;
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
This is my solution using Apache commons:
public static Collection<String> getPropertyNamesListWithAnnotation(Class<?> targetClass, Class<? extends Annotation> annotationClass)
Set<String> fieldNamesWithAnnotation = FieldUtils.getFieldsListWithAnnotation(targetClass, annotationClass).stream().map(Field::getName).collect(Collectors.toSet());
fieldNamesWithAnnotation.addAll(MethodUtils.getMethodsListWithAnnotation(targetClass, annotationClass, true, false).stream()
.map(Method::getName)
.filter(LangHelper::isValidGetterOrSetter)
.map(name -> StringUtils.uncapitalize(RegExUtils.replaceFirst(name, "^(get
private static boolean isValidGetterOrSetter(String methodName)
if (!StringUtils.startsWithAny(methodName, "get", "set", "is"))
LOG.warn("Annotated method is no valid getter or setter: '' -> Ignoring", methodName);
return false;
return true;
add a comment |
up vote
0
down vote
accepted
This is my solution using Apache commons:
public static Collection<String> getPropertyNamesListWithAnnotation(Class<?> targetClass, Class<? extends Annotation> annotationClass)
Set<String> fieldNamesWithAnnotation = FieldUtils.getFieldsListWithAnnotation(targetClass, annotationClass).stream().map(Field::getName).collect(Collectors.toSet());
fieldNamesWithAnnotation.addAll(MethodUtils.getMethodsListWithAnnotation(targetClass, annotationClass, true, false).stream()
.map(Method::getName)
.filter(LangHelper::isValidGetterOrSetter)
.map(name -> StringUtils.uncapitalize(RegExUtils.replaceFirst(name, "^(get
private static boolean isValidGetterOrSetter(String methodName)
if (!StringUtils.startsWithAny(methodName, "get", "set", "is"))
LOG.warn("Annotated method is no valid getter or setter: '' -> Ignoring", methodName);
return false;
return true;
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
This is my solution using Apache commons:
public static Collection<String> getPropertyNamesListWithAnnotation(Class<?> targetClass, Class<? extends Annotation> annotationClass)
Set<String> fieldNamesWithAnnotation = FieldUtils.getFieldsListWithAnnotation(targetClass, annotationClass).stream().map(Field::getName).collect(Collectors.toSet());
fieldNamesWithAnnotation.addAll(MethodUtils.getMethodsListWithAnnotation(targetClass, annotationClass, true, false).stream()
.map(Method::getName)
.filter(LangHelper::isValidGetterOrSetter)
.map(name -> StringUtils.uncapitalize(RegExUtils.replaceFirst(name, "^(get
private static boolean isValidGetterOrSetter(String methodName)
if (!StringUtils.startsWithAny(methodName, "get", "set", "is"))
LOG.warn("Annotated method is no valid getter or setter: '' -> Ignoring", methodName);
return false;
return true;
This is my solution using Apache commons:
public static Collection<String> getPropertyNamesListWithAnnotation(Class<?> targetClass, Class<? extends Annotation> annotationClass)
Set<String> fieldNamesWithAnnotation = FieldUtils.getFieldsListWithAnnotation(targetClass, annotationClass).stream().map(Field::getName).collect(Collectors.toSet());
fieldNamesWithAnnotation.addAll(MethodUtils.getMethodsListWithAnnotation(targetClass, annotationClass, true, false).stream()
.map(Method::getName)
.filter(LangHelper::isValidGetterOrSetter)
.map(name -> StringUtils.uncapitalize(RegExUtils.replaceFirst(name, "^(get
private static boolean isValidGetterOrSetter(String methodName)
if (!StringUtils.startsWithAny(methodName, "get", "set", "is"))
LOG.warn("Annotated method is no valid getter or setter: '' -> Ignoring", methodName);
return false;
return true;
answered Nov 13 at 17:03
t777
1,17852440
1,17852440
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53243239%2fgets-all-fields-with-a-specific-annotation-on-the-field-or-the-getter%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Why just not use reflection from java ?
– Schidu Luca
Nov 10 at 20:48
@SchiduLuca Yes, that's possible, but I think, that someone has done that before and that there must some util class for that in some library.
– t777
Nov 10 at 20:57
While searching for this utility you could make your own util method, is not that hard anyway
– Schidu Luca
Nov 10 at 21:04
1
Okay. I have done it on my own using some reflection util methods ;)
– t777
Nov 11 at 12:20
@t777 if you solved own question then it would be still nice to post answer ;) Someone might later find that question from google or stack search and will only see that you solved it.
– GotoFinal
Nov 11 at 21:02