Here you can find the source of findAnnotation(Class> clazz, Class annotationType)
public static <A extends Annotation> A findAnnotation(Class<?> clazz, Class<A> annotationType)
//package com.java2s; /*//from ww w . java2 s .c o m * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.Set; public class Main { public static <A extends Annotation> A findAnnotation(Class<?> clazz, Class<A> annotationType) { A annotation = clazz.getAnnotation(annotationType); if (annotation != null) { return annotation; } for (Class<?> ifc : clazz.getInterfaces()) { annotation = findAnnotation(ifc, annotationType); if (annotation != null) { return annotation; } } Class<?> superClass = clazz.getSuperclass(); if (superClass == null || superClass == Object.class) { return null; } return findAnnotation(superClass, annotationType); } /** * Return all interfaces that are implemented by this class, traversing * super classes and super interfaces. * * @param c * @return Set of classes. May be empty but not null. */ public static Set<Class<?>> getInterfaces(Class<?> c) { Class<?> interfaces[] = c.getInterfaces(); Set<Class<?>> classes = new HashSet<Class<?>>(); if (interfaces == null) return classes; addAll(classes, interfaces); for (Class<?> cl : interfaces) { classes.addAll(getInterfaces(cl)); } Class<?> superClass = c.getSuperclass(); if (superClass != null) { classes.addAll(getInterfaces(superClass)); } return classes; } /** * Adds elements of an array to a set. The JRE 1.5 does include a similar * method in the Collections class, but that breaks GWT-SL 1.4 * compatibility. * * @param set * @param elements */ public static void addAll(Set<Class<?>> set, Class<?>[] elements) { for (Class<?> element : elements) set.add(element); } }