Here you can find the source of findFieldInternal(Class currentClass, Class extends Annotation> annotation, Set
private static void findFieldInternal(Class currentClass, Class<? extends Annotation> annotation, Set<Field> fields)
//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; } }