Java Reflection Annotation getAnnotation(Enum enumConstant, Class annotationClass)

Here you can find the source of getAnnotation(Enum enumConstant, Class annotationClass)

Description

get Annotation

License

Open Source License

Declaration

public static <A extends Annotation> A getAnnotation(Enum<?> enumConstant, Class<A> annotationClass) 

Method Source Code

//package com.java2s;
/**/*from   w  w w  .  ja va2  s  .  c o  m*/
 * eobjects.org AnalyzerBeans
 * Copyright (C) 2010 eobjects.org
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the GNU
 * Lesser General Public License, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License
 * for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this distribution; if not, write to:
 * Free Software Foundation, Inc.
 * 51 Franklin Street, Fifth Floor
 * Boston, MA  02110-1301  USA
 */

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

import java.lang.reflect.Field;

public class Main {
    /**
     * A lock used at various points when calling Class.getAnnotation(...) or
     * Field.getAnnotation(...), since it seems there is a deadlock issue in the
     * Sun JVM when calling this method in a multithreaded environment!
     */
    public static final Object ANNOTATION_REFLECTION_LOCK = new Object();

    public static <A extends Annotation> A getAnnotation(Enum<?> enumConstant, Class<A> annotationClass) {
        try {
            Field field = enumConstant.getClass().getDeclaredField(enumConstant.name());
            return getAnnotation(field, annotationClass);
        } catch (Exception e) {
            throw new IllegalStateException(e);
        }
    }

    public static <A extends Annotation> A getAnnotation(AnnotatedElement element, Class<A> annotationClass) {
        synchronized (ANNOTATION_REFLECTION_LOCK) {
            return element.getAnnotation(annotationClass);
        }
    }
}

Related

  1. getAnnotation(Class cl, Object o)
  2. getAnnotation(Class clazz, Method method, int parameterIndex)
  3. getAnnotation(Class cls, Annotation... annotations)
  4. getAnnotation(Class cls, Method... methods)
  5. getAnnotation(Class lookingFor, Annotation[] annotations)
  6. getAnnotation(final AnnotatedElement annotatedElement, final Class annotationClass)
  7. getAnnotation(final Class c, final Class annClass)
  8. getAnnotation(final Class annotatedClass, final Class annotationClass)
  9. getAnnotation(final Class type, final Class annotation)