Class ReflectUtil

java.lang.Object
org.nuiton.util.ReflectUtil

public class ReflectUtil extends Object
Introspection sur une classe. Détermine si un attribut est constant, recherche de constantes d'un type donné, conversion d'une classe en Enum... Created: 30 décembre 2007
Author:
Tony Chemit - chemit@codelutin.com
  • Constructor Details

    • ReflectUtil

      public ReflectUtil()
  • Method Details

    • isConstantField

      public static boolean isConstantField(Field field)
      Pour déterminer si un champ d'une classe est une constante (modifiers sont static, final et public)
      Parameters:
      field - le champs à tester
      Returns:
      true si les modifiers sont final, static et public
    • getConstants

      public static <T> List<T> getConstants(Class<?> klass, Class<T> searchingClass)
      Recherche dans une classe donnée klazz, les constantes d'un certain type searchingClass et les retourne. L'algorithme parcourt aussi les superclasses.
      Type Parameters:
      T - enumeration's type
      Parameters:
      klass - la classe contenant les constantes
      searchingClass - le type des champs constants à récupérer
      Returns:
      la liste des champs du type requis dans
      Throws:
      RuntimeException - si problème lors de la récupération
    • getConstant

      public static <T> T getConstant(Class<?> klass, String fieldName)
      Type Parameters:
      T - enumeration's type
      Parameters:
      klass - the required class
      fieldName - the required constant name
      Returns:
      the constant value
    • getEnumClass

      public static <T extends Enum<T>> Class<T> getEnumClass(Class<?> type) throws IllegalArgumentException
      Convertit une classe non typée, en une classe d'enum
      Type Parameters:
      T - enumeration's type
      Parameters:
      type - la classe a typer
      Returns:
      la classe typee
      Throws:
      IllegalArgumentException - si le type est null ou non une extension de la classe Enum.
    • getDeclaredMethod

      public static Method getDeclaredMethod(Class<?> klass, String methodName, boolean strict, Object... arguments) throws IllegalArgumentException
      Cherche une methode selon son nom et ses paramètres d'invocation.
      Parameters:
      klass - la classe dans laquelle rechercher la méthode
      methodName - le nom de la méthode recherchée
      strict - un drapeau pour déclancher une exception si la méthode n'est pas trouvée
      arguments - les arguments d'invocation de la méthode
      Returns:
      la méthode trouvée
      Throws:
      IllegalArgumentException - si la méthode n'est pas trouvée et que le drapeau strict est à true
      Since:
      1.3.1
    • boxType

      public static Class<?> boxType(Class<?> type)
      Obtain the boxed type of any incoming type. If incoming type is not a primitive type, then just returns himself.
      Parameters:
      type - the type to box
      Returns:
      the boxed type
      Since:
      1.3.1
      See Also:
    • unboxType

      public static Class<?> unboxType(Class<?> type)
      Obtain the unboxed type of any incoming type. If incoming type is a primitive type, then just returns himself.
      Parameters:
      type - the type to unbox
      Returns:
      the unboxed type
      Since:
      1.3.1
      See Also:
    • getAllDeclaredFields

      public static Set<Field> getAllDeclaredFields(Class<?> objectClass)
      Obtain all the declared fields of the given objectClass with a deep scan inside super classes and interfaces. Note: The type Object will not be scanned.
      Parameters:
      objectClass - the object class to scan
      Returns:
      the set of all declared fields found
      Since:
      2.0
    • getAllDeclaredMethods

      public static Set<Method> getAllDeclaredMethods(Class<?> objectClass)
      Obtain all the declared methods of the given objectClass with a deep scan inside super classes and interfaces. Note: The type Object will not be scanned.
      Parameters:
      objectClass - the object class to scan
      Returns:
      the set of all declared methods found
      Since:
      2.0
    • getFieldAnnotation

      public static <A extends Annotation> Map<Field,A> getFieldAnnotation(Class<?> objectClass, Class<A> annotationClass)
      Obtain all the fields with the given annotation type. Note: This method will not scan deeply the given type (no scan of super-classes nor interfaces).
      Type Parameters:
      A - type of annotation to scan
      Parameters:
      objectClass - the type to scan
      annotationClass - the type of annotation to scan
      Returns:
      the dictionnary of fields with the given annotation
      Since:
      2.0
    • getFieldAnnotation

      public static <A extends Annotation> Map<Field,A> getFieldAnnotation(Class<?> objectClass, Class<A> annotationClass, boolean deepVisit)
      Obtain all the fields with the given annotation type. Note: This method will scan deeply the given type if parameter deepVisit is setted to true. Note: The type Object will not be scanned.
      Type Parameters:
      A - type of annotation to scan
      Parameters:
      objectClass - the type to scan
      annotationClass - the type of annotation to scan
      deepVisit - flag to visit deeply the class (if set to true, will also scan super classes and interfaces)
      Returns:
      the dictionnary of fields with the given annotation
      Since:
      2.0
    • getMethodAnnotation

      public static <A extends Annotation> Map<Method,A> getMethodAnnotation(Class<?> objectClass, Class<A> annotationClass)
      Obtain all the methods with the given annotation type. Note: This method will not scan deeply the given type (no scan of super-classes nor interfaces).
      Type Parameters:
      A - type of annotation to scan
      Parameters:
      objectClass - the type to scan
      annotationClass - the type of annotation to scan
      Returns:
      the dictionnary of methods with the given annotation
      Since:
      2.0
    • getMethodAnnotation

      public static <A extends Annotation> Map<Method,A> getMethodAnnotation(Class<?> objectClass, Class<A> annotationClass, boolean deepVisit)
      Obtain all the methods with the given annotation type. Note: This method will scan deeply the given type if parameter deepVisit is setted to true. Note: The type Object will not be scanned.
      Type Parameters:
      A - type of annotation to scan
      Parameters:
      objectClass - the type to scan
      annotationClass - the type of annotation to scan
      deepVisit - flag to visit deeply the class (if set to true, will also scan super classes and interfaces)
      Returns:
      the dictionnary of methods with the given annotation
      Since:
      2.0
    • getDeclaredMethod

      protected static Method getDeclaredMethod(Class<?> klass, String methodName, Set<Class<?>> visitedClasses, Object... arguments)
    • getAllDeclaredFields

      protected static void getAllDeclaredFields(Class<?> objectClass, Set<Class<?>> visitedClasses, Set<Field> result)
    • getAllDeclaredMethods

      protected static void getAllDeclaredMethods(Class<?> objectClass, Set<Class<?>> visitedClasses, Set<Method> result)
    • getFieldAnnotation

      protected static <A extends Annotation> void getFieldAnnotation(Class<?> objectClass, Class<A> annotationClass, boolean deepVisit, Set<Class<?>> visitedClasses, Map<Field,A> result)
    • getMethodAnnotation

      protected static <A extends Annotation> void getMethodAnnotation(Class<?> objectClass, Class<A> annotationClass, boolean deepVisit, Set<Class<?>> visitedClasses, Map<Method,A> result)