Просмотр исходного кода

add another fieldNamesWithAnnotation that takes a Class

tags/2.0.1
Jonathan Cobb 4 лет назад
Родитель
Сommit
e2ca562350
1 измененных файлов: 7 добавлений и 3 удалений
  1. +7
    -3
      src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java

+ 7
- 3
src/main/java/org/cobbzilla/util/reflect/ReflectionUtil.java Просмотреть файл

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


Загрузка…
Отмена
Сохранить