Class ReflectionUtil
java.lang.Object
org.apache.logging.log4j.core.util.ReflectionUtil
Utility class for performing common reflective operations.
- Since:
- 2.1
-
Method Summary
Modifier and TypeMethodDescriptionstatic <T> Constructor<T>getDefaultConstructor(Class<T> clazz) Gets the default (no-arg) constructor for a given class.static ObjectgetFieldValue(Field field, Object instance) Gets the value of aField, making it accessible if required.static ObjectgetStaticFieldValue(Field field) Gets the value of a staticField, making it accessible if required.static <T> Tinstantiate(Class<T> clazz) Constructs a newTobject using the default constructor of its class.static <T extends AccessibleObject & Member>
booleanisAccessible(T member) Indicates whether or not aMemberis both public and is contained in a public class.static voidmakeAccessible(Field field) Makes aFieldaccessibleif it is not public or if it is final.static <T extends AccessibleObject & Member>
voidmakeAccessible(T member) Makes aMemberaccessibleif the member is not public.static voidsetFieldValue(Field field, Object instance, Object value) Sets the value of aField, making it accessible if required.static voidsetStaticFieldValue(Field field, Object value) Sets the value of a staticField, making it accessible if required.
-
Method Details
-
isAccessible
Indicates whether or not aMemberis 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 benull).- Returns:
trueifmemberis public and contained in a public class.- Throws:
NullPointerException- ifmemberisnull.
-
makeAccessible
Makes aMemberaccessibleif the member is not public.- Type Parameters:
T- type of the object to make accessible- Parameters:
member- the Member to make accessible (must not benull).- Throws:
NullPointerException- ifmemberisnull.
-
makeAccessible
Makes aFieldaccessibleif it is not public or if it is final.Note that using this method to make a
finalfield writable will most likely not work very well due to compiler optimizations and the like.- Parameters:
field- the Field to make accessible (must not benull).- Throws:
NullPointerException- iffieldisnull.
-
getFieldValue
Gets the value of aField, making it accessible if required.- Parameters:
field- the Field to obtain a value from (must not benull).instance- the instance to obtain the field value from ornullonly if the field is static.- Returns:
- the value stored by the field.
- Throws:
NullPointerException- iffieldisnull, or ifinstanceisnullbutfieldis notstatic.- See Also:
-
getStaticFieldValue
Gets the value of a staticField, making it accessible if required.- Parameters:
field- the Field to obtain a value from (must not benull).- Returns:
- the value stored by the static field.
- Throws:
NullPointerException- iffieldisnull, or iffieldis notstatic.- See Also:
-
setFieldValue
Sets the value of aField, making it accessible if required.- Parameters:
field- the Field to write a value to (must not benull).instance- the instance to write the value to ornullonly if the field is static.value- the (possibly wrapped) value to write to the field.- Throws:
NullPointerException- iffieldisnull, or ifinstanceisnullbutfieldis notstatic.- See Also:
-
setStaticFieldValue
Sets the value of a staticField, making it accessible if required.- Parameters:
field- the Field to write a value to (must not benull).value- the (possibly wrapped) value to write to the field.- Throws:
NullPointerException- iffieldisnull, or iffieldis notstatic.- See Also:
-
getDefaultConstructor
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
Constructs a newTobject using the default constructor of its class. Any exceptions thrown by the constructor will be rethrown by this method, possibly wrapped in anUndeclaredThrowableException.- 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 voidIllegalStateException- if access is denied to the constructor, or there are no default constructorsInternalError- wrapper of the underlying exception if checked
-