- java.lang.Object
-
- org.apache.logging.log4j.util.ReflectionUtil
-
public final class ReflectionUtil extends Object
Utility class for performing common reflective operations.- Since:
- 2.1
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <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 Detail
-
isAccessible
public static <T extends AccessibleObject & Member> boolean isAccessible(T member)
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
public static <T extends AccessibleObject & Member> void makeAccessible(T member)
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
public static void makeAccessible(Field field)
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
public static Object getFieldValue(Field field, Object instance)
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:
Field.get(Object)
-
getStaticFieldValue
public static Object getStaticFieldValue(Field field)
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:
Field.get(Object)
-
setFieldValue
public static void setFieldValue(Field field, Object instance, Object value)
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:
Field.set(Object, Object)
-
setStaticFieldValue
public static void setStaticFieldValue(Field field, Object value)
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:
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 newT
object using the default constructor of its class. Any exceptions thrown by the constructor will be rethrown by this method, possibly wrapped in anInternalException
.- 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 constructorsInternalException
- wrapper of the underlying exception if checked
-
-