Class ReflectionUtils


  • public final class ReflectionUtils
    extends java.lang.Object
    Author:
    Henri Tremblay
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static java.lang.reflect.Method findMethod​(java.lang.Class<?> clazz, java.lang.String name, ReflectionUtils.Predicate<java.lang.reflect.Method> filter)
      Attempt to find a Method on the supplied class with the supplied name and no parameters.
      static java.lang.reflect.Method findMethod​(java.lang.Class<?> clazz, java.lang.String name, ReflectionUtils.Predicate<java.lang.reflect.Method> filter, java.lang.Class<?>... paramTypes)
      Attempt to find a Method on the supplied class with the supplied name and parameter types.
      static <T> java.lang.reflect.Constructor<T> getConstructor​(java.lang.Class<T> clazz, java.lang.Object... objs)
      Returns a constructor that contains objs as arguments.
      static java.lang.reflect.Method getDeclaredMethod​(java.lang.Class<?> clazz, java.lang.String name, java.lang.Class<?>... paramTypes)
      Basically calls getDeclaredMethod on a Class but wraps the NoSuchMethodException into a Runtime.
      static boolean isClassAvailable​(java.lang.String className)
      Tells if a class is available in the classpath
      static boolean isDefaultMethod​(java.lang.reflect.Method method)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • OBJECT_EQUALS

        public static final java.lang.reflect.Method OBJECT_EQUALS
      • OBJECT_HASHCODE

        public static final java.lang.reflect.Method OBJECT_HASHCODE
      • OBJECT_TOSTRING

        public static final java.lang.reflect.Method OBJECT_TOSTRING
      • OBJECT_FINALIZE

        public static final java.lang.reflect.Method OBJECT_FINALIZE
    • Method Detail

      • findMethod

        public static java.lang.reflect.Method findMethod​(java.lang.Class<?> clazz,
                                                          java.lang.String name,
                                                          ReflectionUtils.Predicate<java.lang.reflect.Method> filter)
        Attempt to find a Method on the supplied class with the supplied name and no parameters. Searches all superclasses up to Object. The filter is used to ignore some kind of methods the caller doesn't want to see returned. In this case they are totally ignored and can't clash with a non-ignored one to cause ambiguity.

        Returns null if no Method can be found.

        Parameters:
        clazz - the class to introspect
        name - the name of the method
        filter - tells what methods to ignore in the research
        Returns:
        the Method object, or null if none found
      • findMethod

        public static java.lang.reflect.Method findMethod​(java.lang.Class<?> clazz,
                                                          java.lang.String name,
                                                          ReflectionUtils.Predicate<java.lang.reflect.Method> filter,
                                                          java.lang.Class<?>... paramTypes)
        Attempt to find a Method on the supplied class with the supplied name and parameter types. Searches all superclasses up to Object. The filter is used to ignore some kind of methods the caller doesn't want to see returned. In this case they are totally ignored and can't clash with a non-ignored one to cause ambiguity.

        Returns null if no Method can be found.

        Parameters:
        clazz - the class to introspect
        name - the name of the method
        filter - tells what methods to ignore in the research
        paramTypes - the parameter types of the method (may be null to indicate any signature)
        Returns:
        the Method object, or null if none found
      • getConstructor

        public static <T> java.lang.reflect.Constructor<T> getConstructor​(java.lang.Class<T> clazz,
                                                                          java.lang.Object... objs)
                                                                   throws java.lang.NoSuchMethodException
        Returns a constructor that contains objs as arguments.

        We could not do something like clazz.getConstructor(objs.class()) because that would require casting all the passed arguments to the exact parameter types of the desired constructor.

        Type Parameters:
        T - type of the class searched
        Parameters:
        clazz - class on which we are searching the constructor
        objs - list of arguments of the constructor
        Returns:
        a constructor with the arguments in objs
        Throws:
        java.lang.NoSuchMethodException - when the constructor with args does not exist or is ambiguous
      • getDeclaredMethod

        public static java.lang.reflect.Method getDeclaredMethod​(java.lang.Class<?> clazz,
                                                                 java.lang.String name,
                                                                 java.lang.Class<?>... paramTypes)
        Basically calls getDeclaredMethod on a Class but wraps the NoSuchMethodException into a Runtime.
        Parameters:
        clazz - class on which the getDeclaredMethod is called
        name - method name
        paramTypes - method parameters
        Returns:
        the method searched
      • isClassAvailable

        public static boolean isClassAvailable​(java.lang.String className)
        Tells if a class is available in the classpath
        Parameters:
        className - full class name
        Returns:
        true if the class was found
      • isDefaultMethod

        public static boolean isDefaultMethod​(java.lang.reflect.Method method)