Class ReflectionUtil


  • public final class ReflectionUtil
    extends Object
    Utility class for performing common reflective operations.
    Since:
    2.1
    • Method Detail

      • isAccessible

        public static <T extends AccessibleObject & Member> boolean isAccessible​(T member)
        Indicates whether or not a Member is both public and is contained in a public class.
        Type Parameters:
        T - type of the object whose accessibility to test
        Parameters:
        member - the Member to check for public accessibility (must not be null).
        Returns:
        true if member is public and contained in a public class.
        Throws:
        NullPointerException - if member is null.
      • makeAccessible

        public static <T extends AccessibleObject & Member> void makeAccessible​(T member)
        Makes a Member accessible if the member is not public.
        Type Parameters:
        T - type of the object to make accessible
        Parameters:
        member - the Member to make accessible (must not be null).
        Throws:
        NullPointerException - if member is null.
      • makeAccessible

        public static void makeAccessible​(Field field)
        Makes a Field accessible if it is not public or if it is final.

        Note that using this method to make a final field writable will most likely not work very well due to compiler optimizations and the like.

        Parameters:
        field - the Field to make accessible (must not be null).
        Throws:
        NullPointerException - if field is null.
      • getFieldValue

        public static Object getFieldValue​(Field field,
                                           Object instance)
        Gets the value of a Field, making it accessible if required.
        Parameters:
        field - the Field to obtain a value from (must not be null).
        instance - the instance to obtain the field value from or null only if the field is static.
        Returns:
        the value stored by the field.
        Throws:
        NullPointerException - if field is null, or if instance is null but field is not static.
        See Also:
        Field.get(Object)
      • getStaticFieldValue

        public static Object getStaticFieldValue​(Field field)
        Gets the value of a static Field, making it accessible if required.
        Parameters:
        field - the Field to obtain a value from (must not be null).
        Returns:
        the value stored by the static field.
        Throws:
        NullPointerException - if field is null, or if field is not static.
        See Also:
        Field.get(Object)
      • setFieldValue

        public static void setFieldValue​(Field field,
                                         Object instance,
                                         Object value)
        Sets the value of a Field, making it accessible if required.
        Parameters:
        field - the Field to write a value to (must not be null).
        instance - the instance to write the value to or null only if the field is static.
        value - the (possibly wrapped) value to write to the field.
        Throws:
        NullPointerException - if field is null, or if instance is null but field is not static.
        See Also:
        Field.set(Object, Object)
      • setStaticFieldValue

        public static void setStaticFieldValue​(Field field,
                                               Object value)
        Sets the value of a static Field, making it accessible if required.
        Parameters:
        field - the Field to write a value to (must not be null).
        value - the (possibly wrapped) value to write to the field.
        Throws:
        NullPointerException - if field is null, or if field is not static.
        See Also:
        Field.set(Object, Object)
      • getDefaultConstructor

        public static <T> Constructor<T> getDefaultConstructor​(Class<T> clazz)
        Gets the default (no-arg) constructor for a given class.
        Type Parameters:
        T - the type made by the constructor
        Parameters:
        clazz - the class to find a constructor for
        Returns:
        the default constructor for the given class
        Throws:
        IllegalStateException - if no default constructor can be found
      • instantiate

        public static <T> T instantiate​(Class<T> clazz)
        Constructs a new T object using the default constructor of its class. Any exceptions thrown by the constructor will be rethrown by this method, possibly wrapped in an InternalException.
        Type Parameters:
        T - the type of the object to construct.
        Parameters:
        clazz - the class to use for instantiation.
        Returns:
        a new instance of T made from its default constructor.
        Throws:
        IllegalArgumentException - if the given class is abstract, an interface, an array class, a primitive type, or void
        IllegalStateException - if access is denied to the constructor, or there are no default constructors
        InternalException - wrapper of the underlying exception if checked