Class ReflectionUtil

java.lang.Object
org.infinispan.commons.util.ReflectionUtil

public class ReflectionUtil extends Object
Basic reflection utilities to enhance what the JDK provides.
Since:
4.0
Author:
Manik Surtani (manik@jboss.org)
  • Field Details

    • EMPTY_CLASS_ARRAY

      public static final Class<?>[] EMPTY_CLASS_ARRAY
  • Constructor Details

    • ReflectionUtil

      public ReflectionUtil()
  • Method Details

    • getAllMethods

      public static List<Method> getAllMethods(Class<?> c, Class<? extends Annotation> annotationType)
      Returns a set of Methods that contain the given method annotation. This includes all public, protected, package and private methods, as well as those of superclasses. Note that this does *not* include overridden methods.
      Parameters:
      c - class to inspect
      annotationType - the type of annotation to look for
      Returns:
      List of Method objects that require injection.
    • getAllMethodsShallow

      public static List<Method> getAllMethodsShallow(Class<?> c, Class<? extends Annotation> annotationType)
      Returns a set of Methods that contain the given method annotation. This includes all public, protected, package and private methods, but not those of superclasses and interfaces.
      Parameters:
      c - class to inspect
      annotationType - the type of annotation to look for
      Returns:
      List of Method objects that require injection.
    • getAllFields

      public static List<Field> getAllFields(Class<?> c, Class<? extends Annotation> annotationType)
    • getAnnotatedFields

      public static List<Field> getAnnotatedFields(Class<?> c, Class<? extends Annotation> annotationType)
    • findMethod

      public static Method findMethod(Class<?> type, String methodName)
    • findMethod

      public static Method findMethod(Class<?> type, String methodName, Class<?>... parameters)
    • invokeAccessibly

      public static Object invokeAccessibly(Object instance, Method method, Object... parameters)
      Invokes a method using reflection, in an accessible manner (by using Method.setAccessible(boolean)
      Parameters:
      instance - instance on which to execute the method
      method - method to execute
      parameters - parameters
    • invokeMethod

      public static Object invokeMethod(Object instance, Method method, Object[] parameters)
    • setAccessibly

      public static void setAccessibly(Object instance, Field field, Object value)
    • setField

      public static void setField(Object instance, Field field, Object value)
    • findGetterForField

      public static Method findGetterForField(Class<?> c, String fieldName)
    • findSetterForField

      public static Method findSetterForField(Class<?> c, String fieldName)
    • extractFieldName

      public static String extractFieldName(String setterOrGetter)
    • getValue

      public static Object getValue(Object instance, String fieldName)
      Retrieves the value of a field of an object instance via reflection
      Parameters:
      instance - to inspect
      fieldName - name of field to retrieve
      Returns:
      a value
    • getAnnotation

      public static <T extends Annotation> T getAnnotation(Class<?> clazz, Class<T> ann)
      Inspects the class passed in for the class level annotation specified. If the annotation is not available, this method recursively inspects superclasses and interfaces until it finds the required annotation.

      Returns null if the annotation cannot be found.

      Parameters:
      clazz - class to inspect
      ann - annotation to search for. Must be a class-level annotation.
      Returns:
      the annotation instance, or null
    • isAnnotationPresent

      public static boolean isAnnotationPresent(Class<?> clazz, Class<? extends Annotation> annotation)
      Tests whether an annotation is present on a class. The order tested is:
      • The class itself
      • All implemented interfaces
      • Any superclasses
      Parameters:
      clazz - class to test
      annotation - annotation to look for
      Returns:
      true if the annotation is found, false otherwise
    • toClassArray

      public static Class<?>[] toClassArray(String[] typeList, ClassLoader classLoader) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • getClassForName

      public static Class<?> getClassForName(String name, ClassLoader cl) throws ClassNotFoundException
      Throws:
      ClassNotFoundException
    • toStringArray

      public static String[] toStringArray(Class<?>[] classes)
    • getField

      public static Field getField(String fieldName, Class<?> objectClass)
    • unwrap

      public static <T> T unwrap(Object obj, Class<T> clazz)
    • unwrapAny

      public static <T> T unwrapAny(Class<T> clazz, Object... objs)
    • getIntAccessibly

      public static int getIntAccessibly(Field f, Object instance)