Class ReflectionUtil

java.lang.Object
org.apache.logging.log4j.core.util.ReflectionUtil

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

    • 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:
    • 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:
    • 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:
    • 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:
    • 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 UndeclaredThrowableException.
      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
      InternalError - wrapper of the underlying exception if checked