Java Reflection Field Find findFieldInternal(Class currentClass, Class annotation, Set fields)

Here you can find the source of findFieldInternal(Class currentClass, Class annotation, Set fields)

Description

find Field Internal

License

Open Source License

Declaration

private static void findFieldInternal(Class currentClass, Class<? extends Annotation> annotation,
            Set<Field> fields) 

Method Source Code

//package com.java2s;
/**************************************************************************************
 * Copyright (C) 2008 EsperTech, Inc. All rights reserved.                            *
 * http://esper.codehaus.org                                                          *
 * http://www.espertech.com                                                           *
 * ---------------------------------------------------------------------------------- *
 * The software in this package is published under the terms of the GPL license       *
 * a copy of which has been included with this distribution in the license.txt file.  *
 **************************************************************************************/

import java.lang.annotation.Annotation;
import java.lang.reflect.*;

import java.util.*;

public class Main {
    private static void findFieldInternal(Class currentClass, Class<? extends Annotation> annotation,
            Set<Field> fields) {
        for (Field field : currentClass.getDeclaredFields()) {
            if (isAnnotationListed(annotation, field.getDeclaredAnnotations())) {
                fields.add(field);//ww w  .j  a v  a2  s . c o m
            }
        }
    }

    public static boolean isAnnotationListed(Class<? extends Annotation> annotationClass,
            Annotation[] annotations) {
        return !getAnnotations(annotationClass, annotations).isEmpty();
    }

    public static List<Annotation> getAnnotations(Class<? extends Annotation> annotationClass,
            Annotation[] annotations) {
        List<Annotation> result = null;
        for (Annotation annotation : annotations) {
            if (annotation.annotationType() == annotationClass) {
                if (result == null) {
                    result = new ArrayList<Annotation>();
                }
                result.add(annotation);
            }
        }
        if (result == null) {
            return Collections.emptyList();
        }
        return result;
    }
}

Related

  1. findFieldFromGetter(Class clazz, Method method)
  2. findFieldIn(Class type, String name)
  3. findFieldInClass(Class clazz, String fieldName)
  4. findFieldInClassHierarchy(Class clazz, String fieldName)
  5. findFieldIncludeSuperclass(String fieldName, Class clazz)
  6. findFieldOfBean(Object bean, String fieldName)
  7. findFieldOfTypeInClass(final Class source, final Class type)
  8. findFieldRecursively(Class c, String fieldName)
  9. findFields(Class c, boolean allowTransient, int max, Iterable> fieldClassesToFind, Iterable> exceptClasses)