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 Object
getFieldValue
(Field field, Object instance) Gets the value of aField
, making it accessible if required.static Object
getStaticFieldValue
(Field field) Gets the value of a staticField
, making it accessible if required.static <T> T
instantiate
(Class<T> clazz) Constructs a newT
object using the default constructor of its class.static <T extends AccessibleObject & Member>
booleanisAccessible
(T member) Indicates whether or not aMember
is both public and is contained in a public class.static void
makeAccessible
(Field field) Makes aField
accessible
if it is not public or if it is final.static <T extends AccessibleObject & Member>
voidmakeAccessible
(T member) Makes aMember
accessible
if the member is not public.static void
setFieldValue
(Field field, Object instance, Object value) Sets the value of aField
, making it accessible if required.static void
setStaticFieldValue
(Field field, Object value) Sets the value of a staticField
, making it accessible if required.
-
Method Details
-
isAccessible
Indicates whether or not aMember
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 benull
).- Returns:
true
ifmember
is public and contained in a public class.- Throws:
NullPointerException
- ifmember
isnull
.
-
makeAccessible
Makes aMember
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 benull
).- Throws:
NullPointerException
- ifmember
isnull
.
-
makeAccessible
Makes aField
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 benull
).- Throws:
NullPointerException
- iffield
isnull
.
-
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 ornull
only if the field is static.- Returns:
- the value stored by the field.
- Throws:
NullPointerException
- iffield
isnull
, or ifinstance
isnull
butfield
is 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
- iffield
isnull
, or iffield
is 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 ornull
only if the field is static.value
- the (possibly wrapped) value to write to the field.- Throws:
NullPointerException
- iffield
isnull
, or ifinstance
isnull
butfield
is 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
- iffield
isnull
, or iffield
is 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 newT
object 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
-