Przeglądaj źródła

add another fieldNamesWithAnnotation that takes a Class

tags/2.0.1
Jonathan Cobb 4 lat temu
rodzic
commit
e2ca562350
1 zmienionych plików z 7 dodań i 3 usunięć
  1. +7
    -3
      src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java

+ 7
- 3
src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java Wyświetl plik

@@ -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);


Ładowanie…
Anuluj
Zapisz