Java examples for java.lang.annotation:Class Annotation
For the given Class get a collection of the the AnnotatedElement s that match the given annotations or if no annotations are specified then return all of the annotated elements of the given Class.
/*// ww w . ja v a 2s . c o m * Copyright 2002-2006,2009 The Apache Software Foundation. * * 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.io.File; import java.lang.annotation.Annotation; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.net.URL; import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main{ public static void main(String[] argv) throws Exception{ Class clazz = String.class; Class annotation = String.class; System.out.println(getAnnotatedMethods(clazz,annotation)); } /** * For the given <code>Class</code> get a collection of the the {@link AnnotatedElement}s * that match the given <code>annotation</code>s or if no <code>annotation</code>s are * specified then return all of the annotated elements of the given <code>Class</code>. * Includes only the method level annotations. * * @param clazz The {@link Class} to inspect * @param annotation the {@link Annotation}s to find * @return A {@link Collection}<{@link AnnotatedElement}> containing all of the * method {@link AnnotatedElement}s matching the specified {@link Annotation}s */ public static final Collection<Method> getAnnotatedMethods(Class clazz, Class<? extends Annotation>... annotation) { Collection<Method> toReturn = new HashSet<Method>(); for (Method m : clazz.getMethods()) { if (ArrayUtils.isNotEmpty(annotation) && isAnnotatedBy(m, annotation)) { toReturn.add(m); } else if (ArrayUtils.isEmpty(annotation) && ArrayUtils.isNotEmpty(m.getAnnotations())) { toReturn.add(m); } } return toReturn; } /** * Varargs version of <code>AnnotatedElement.isAnnotationPresent()</code> * @see AnnotatedElement */ public static final boolean isAnnotatedBy( AnnotatedElement annotatedElement, Class<? extends Annotation>... annotation) { if (ArrayUtils.isEmpty(annotation)) return false; for (Class<? extends Annotation> c : annotation) { if (annotatedElement.isAnnotationPresent(c)) return true; } return false; } }