Class ReflectionHelpers


  • public class ReflectionHelpers
    extends Object
    Collection of helper methods for calling methods and accessing fields reflectively.
    • Constructor Detail

      • ReflectionHelpers

        public ReflectionHelpers()
    • Method Detail

      • createNullProxy

        public static <T> T createNullProxy​(Class<T> clazz)
      • createDeepProxy

        public static <T> T createDeepProxy​(Class<T> clazz)
        Create a proxy for the given class which returns other deep proxies from all it's methods.

        The returned object will be an instance of the given class, but all methods will return either the "default" value for primitives, or another deep proxy for non-primitive types.

        This should be used rarely, for cases where we need to create deep proxies in order not to crash. The inner proxies are impossible to configure, so there is no way to create meaningful behavior from a deep proxy. It serves mainly to prevent Null Pointer Exceptions.

        Parameters:
        clazz - the class to provide a proxy instance of.
        Returns:
        a new "Deep Proxy" instance of the given class.
      • createDelegatingProxy

        public static <T> T createDelegatingProxy​(Class<T> clazz,
                                                  Object delegate)
      • defaultsFor

        public static <A extends Annotation> A defaultsFor​(Class<A> annotation)
      • getField

        public static <R> R getField​(Object object,
                                     String fieldName)
        Reflectively get the value of a field.
        Type Parameters:
        R - The return type.
        Parameters:
        object - Target object.
        fieldName - The field name.
        Returns:
        Value of the field on the object.
      • setField

        public static void setField​(Object object,
                                    String fieldName,
                                    Object fieldNewValue)
        Reflectively set the value of a field.
        Parameters:
        object - Target object.
        fieldName - The field name.
        fieldNewValue - New value.
      • setField

        public static void setField​(Class<?> type,
                                    Object object,
                                    String fieldName,
                                    Object fieldNewValue)
        Reflectively set the value of a field.
        Parameters:
        type - Target type.
        object - Target object.
        fieldName - The field name.
        fieldNewValue - New value.
      • getStaticField

        public static <R> R getStaticField​(Field field)
        Reflectively get the value of a static field.
        Type Parameters:
        R - The return type.
        Parameters:
        field - Field object.
        Returns:
        Value of the field.
      • getStaticField

        public static <R> R getStaticField​(Class<?> clazz,
                                           String fieldName)
        Reflectively get the value of a static field.
        Type Parameters:
        R - The return type.
        Parameters:
        clazz - Target class.
        fieldName - The field name.
        Returns:
        Value of the field.
      • setStaticField

        public static void setStaticField​(Field field,
                                          Object fieldNewValue)
        Reflectively set the value of a static field.
        Parameters:
        field - Field object.
        fieldNewValue - The new value.
      • setStaticField

        public static void setStaticField​(Class<?> clazz,
                                          String fieldName,
                                          Object fieldNewValue)
        Reflectively set the value of a static field.
        Parameters:
        clazz - Target class.
        fieldName - The field name.
        fieldNewValue - The new value.
      • callInstanceMethod

        public static <R> R callInstanceMethod​(Object instance,
                                               String methodName,
                                               ReflectionHelpers.ClassParameter<?>... classParameters)
        Reflectively call an instance method on an object.
        Type Parameters:
        R - The return type.
        Parameters:
        instance - Target object.
        methodName - The method name to call.
        classParameters - Array of parameter types and values.
        Returns:
        The return value of the method.
      • callInstanceMethod

        public static <R> R callInstanceMethod​(Class<?> cl,
                                               Object instance,
                                               String methodName,
                                               ReflectionHelpers.ClassParameter<?>... classParameters)
        Reflectively call an instance method on an object on a specific class.
        Type Parameters:
        R - The return type.
        Parameters:
        cl - The class.
        instance - Target object.
        methodName - The method name to call.
        classParameters - Array of parameter types and values.
        Returns:
        The return value of the method.
      • callStaticMethod

        public static <R> R callStaticMethod​(ClassLoader classLoader,
                                             String fullyQualifiedClassName,
                                             String methodName,
                                             ReflectionHelpers.ClassParameter<?>... classParameters)
        Helper method for calling a static method using a class from a custom class loader
        Type Parameters:
        R -
        Parameters:
        classLoader -
        fullyQualifiedClassName -
        methodName -
        classParameters -
        Returns:
      • callStaticMethod

        public static <R> R callStaticMethod​(Class<?> clazz,
                                             String methodName,
                                             ReflectionHelpers.ClassParameter<?>... classParameters)
        Reflectively call a static method on a class.
        Type Parameters:
        R - The return type.
        Parameters:
        clazz - Target class.
        methodName - The method name to call.
        classParameters - Array of parameter types and values.
        Returns:
        The return value of the method.
      • loadClass

        public static Class<?> loadClass​(ClassLoader classLoader,
                                         String fullyQualifiedClassName)
        Load a class.
        Parameters:
        classLoader - The class loader.
        fullyQualifiedClassName - The fully qualified class name.
        Returns:
        The class object.
      • newInstance

        public static <T> T newInstance​(Class<T> cl)
        Create a new instance of a class
        Type Parameters:
        T - The class type.
        Parameters:
        cl - The class object.
        Returns:
        New class instance.
      • callConstructor

        public static <R> R callConstructor​(Class<? extends R> clazz,
                                            ReflectionHelpers.ClassParameter<?>... classParameters)
        Reflectively call the constructor of an object.
        Type Parameters:
        R - The return type.
        Parameters:
        clazz - Target class.
        classParameters - Array of parameter types and values.
        Returns:
        The return value of the method.
      • defaultValueForType

        public static Object defaultValueForType​(String returnType)