Bläddra i källkod

add another fieldNamesWithAnnotation that takes a Class

tags/2.0.1
Jonathan Cobb 4 år sedan
förälder
incheckning
e2ca562350
1 ändrade filer med 7 tillägg och 3 borttagningar
  1. +7
    -3
      src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java

+ 7
- 3
src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java Visa fil

@@ -404,12 +404,16 @@ public class ReflectionUtil {
return fieldsWithAnnotation(className, aClass).stream().map(Field::getName).collect(Collectors.toList());
}

public static <T extends Annotation> List<String> fieldNamesWithAnnotation(Class clazz, Class<T> aClass) {
return fieldsWithAnnotation(clazz, aClass).stream().map(Field::getName).collect(Collectors.toList());
}

private static Map<String, List<Field>> _fwaCache = new ExpirationMap<>();
public static <T extends Annotation> List<Field> fieldsWithAnnotation(Class clazz, Class<T> aClass) {
public static <T extends Annotation> List<Field> fieldsWithAnnotation(final Class clazz, Class<T> aClass) {
final String className = clazz.getName();
return _fwaCache.computeIfAbsent(className, k -> {
return _fwaCache.computeIfAbsent(className+":"+aClass.getName(), k -> {
final Set<Field> matches = new LinkedHashSet<>();
Class c = forName(className);
Class c = clazz;
while (!c.equals(Object.class)) {
for (Field f : getAllFields(c)) {
if (f.getAnnotation(aClass) != null) matches.add(f);


Laddar…
Avbryt
Spara