Class FieldUtils
java.lang.Object
org.apache.commons.lang3.reflect.FieldUtils
Utilities for working with
Fields by reflection. Adapted and refactored from the dormant [reflect] Commons
sandbox component.
The ability is provided to break the scoping restrictions coded by the programmer. This can allow fields to be changed that shouldn't be. This facility should be used with care.
- Since:
- 2.5
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Field[]getAllFields(Class<?> cls) Gets all fields of the given class and its parents (if any).getAllFieldsList(Class<?> cls) Gets all fields of the given class and its parents (if any).static FieldgetDeclaredField(Class<?> cls, String fieldName) Gets an accessibleFieldby name respecting scope.static FieldgetDeclaredField(Class<?> cls, String fieldName, boolean forceAccess) Gets an accessibleFieldby name, breaking scope if requested.static FieldGets an accessibleFieldby name respecting scope.static FieldGets an accessibleFieldby name, breaking scope if requested.getFieldsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) Gets all fields of the given class and its parents (if any) that are annotated with the given annotation.static Field[]getFieldsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) Gets all fields of the given class and its parents (if any) that are annotated with the given annotation.static ObjectreadDeclaredField(Object target, String fieldName) Reads the namedpublicField.static ObjectreadDeclaredField(Object target, String fieldName, boolean forceAccess) Gets aFieldvalue by name.static ObjectreadDeclaredStaticField(Class<?> cls, String fieldName) Gets the value of astaticFieldby name.static ObjectreadDeclaredStaticField(Class<?> cls, String fieldName, boolean forceAccess) Gets the value of astaticFieldby name.static ObjectReads the namedpublicField.static ObjectReads the namedField.static ObjectReads an accessibleField.static ObjectReads aField.static ObjectreadStaticField(Class<?> cls, String fieldName) Reads the namedpublic staticField.static ObjectreadStaticField(Class<?> cls, String fieldName, boolean forceAccess) Reads the namedstaticField.static ObjectreadStaticField(Field field) Reads an accessiblestaticField.static ObjectreadStaticField(Field field, boolean forceAccess) Reads a staticField.static voidremoveFinalModifier(Field field) Removes the final modifier from aField.static voidremoveFinalModifier(Field field, boolean forceAccess) Deprecated.As of Java 12, we can no longer drop thefinalmodifier, thus rendering this method obsolete.static voidwriteDeclaredField(Object target, String fieldName, Object value) Writes apublicField.static voidwriteDeclaredField(Object target, String fieldName, Object value, boolean forceAccess) Writes apublicField.static voidwriteDeclaredStaticField(Class<?> cls, String fieldName, Object value) Writes a namedpublic staticField.static voidwriteDeclaredStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) Writes a namedstaticField.static voidwriteField(Object target, String fieldName, Object value) Writes apublicField.static voidwriteField(Object target, String fieldName, Object value, boolean forceAccess) Writes aField.static voidwriteField(Field field, Object target, Object value) Writes an accessibleField.static voidwriteField(Field field, Object target, Object value, boolean forceAccess) Writes aField.static voidwriteStaticField(Class<?> cls, String fieldName, Object value) Writes a namedpublic staticField.static voidwriteStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) Writes a namedstaticField.static voidwriteStaticField(Field field, Object value) Writes apublic staticField.static voidwriteStaticField(Field field, Object value, boolean forceAccess) Writes a staticField.
-
Constructor Details
-
FieldUtils
Deprecated.TODO Make private in 4.0.FieldUtilsinstances should NOT be constructed in standard programming.This constructor is
publicto permit tools that require a JavaBean instance to operate.
-
-
Method Details
-
getAllFields
Gets all fields of the given class and its parents (if any).- Parameters:
cls- theClassto query- Returns:
- An array of Fields (possibly empty).
- Throws:
NullPointerException- Thrown if the class isnull.- Since:
- 3.2
-
getAllFieldsList
Gets all fields of the given class and its parents (if any).- Parameters:
cls- theClassto query- Returns:
- A list of Fields (possibly empty).
- Throws:
NullPointerException- Thrown if the class isnull.- Since:
- 3.2
-
getDeclaredField
Gets an accessibleFieldby name respecting scope. Only the specified class will be considered.- Parameters:
cls- theClassto reflect, must not benullfieldName- the field name to obtain.- Returns:
- The Field object.
- Throws:
NullPointerException- Thrown if the class isnull.IllegalArgumentException- Thrown if the field name isnull, blank, or empty.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
getDeclaredField
Gets an accessibleFieldby name, breaking scope if requested. Only the specified class will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Returns:
- The Field object
- Throws:
NullPointerException- Thrown if the class isnull.IllegalArgumentException- Thrown if the field name isnull, blank, or empty.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
getField
Gets an accessibleFieldby name respecting scope. Superclasses/interfaces will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.- Returns:
- The Field object.
- Throws:
NullPointerException- Thrown if the class isnull.IllegalArgumentException- Thrown if the field name isnull, blank, or empty.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
getField
Gets an accessibleFieldby name, breaking scope if requested. Superclasses/interfaces will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Returns:
- The Field object.
- Throws:
NullPointerException- Thrown if the class isnull.IllegalArgumentException- Thrown if the field name is blank or empty or is matched at multiple places in the inheritance hierarchy.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
getFieldsListWithAnnotation
public static List<Field> getFieldsListWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) Gets all fields of the given class and its parents (if any) that are annotated with the given annotation.- Parameters:
cls- theClassto query.annotationCls- theAnnotationthat must be present on a field to be matched.- Returns:
- A list of Fields (possibly empty).
- Throws:
NullPointerException- Thrown if the class or annotation arenull.- Since:
- 3.4
-
getFieldsWithAnnotation
public static Field[] getFieldsWithAnnotation(Class<?> cls, Class<? extends Annotation> annotationCls) Gets all fields of the given class and its parents (if any) that are annotated with the given annotation.- Parameters:
cls- theClassto query.annotationCls- theAnnotationthat must be present on a field to be matched- Returns:
- An array of Fields (possibly empty).
- Throws:
NullPointerException- Thrown if the class or annotation arenull.- Since:
- 3.4
-
readDeclaredField
public static Object readDeclaredField(Object target, String fieldName) throws IllegalAccessException Reads the namedpublicField. Only the class of the specified object will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.- Returns:
- The value of the field.
- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, or could not be found.IllegalAccessException- Thrown if the named field is notpublic.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readDeclaredField
public static Object readDeclaredField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException Gets aFieldvalue by name. Only the class of the specified object will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only match public fields.- Returns:
- The Field object.
- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, or could not be found.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readDeclaredStaticField
public static Object readDeclaredStaticField(Class<?> cls, String fieldName) throws IllegalAccessException Gets the value of astaticFieldby name. The field must bepublic. Only the specified class will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.- Returns:
- The value of the field.
- Throws:
NullPointerException- Thrown if the class isnull, or the field could not be found.IllegalArgumentException- Thrown if the field name isnull, blank, empty, or is notstatic.IllegalAccessException- Thrown if the field is not accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readDeclaredStaticField
public static Object readDeclaredStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException Gets the value of astaticFieldby name. Only the specified class will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Returns:
- The Field object
- Throws:
NullPointerException- Thrown if the class isnull, or the field could not be found.IllegalArgumentException- Thrown if the field name is blank or empty, is notstatic.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readField
Reads an accessibleField.- Parameters:
field- the field to use.target- the object to call on, may benullforstaticfields.- Returns:
- The field value
- Throws:
NullPointerException- Thrown if the field isnull.IllegalAccessException- Thrown if the field is not accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readField
public static Object readField(Field field, Object target, boolean forceAccess) throws IllegalAccessException Reads aField.- Parameters:
field- the field to use.target- the object to call on, may benullforstaticfields.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.- Returns:
- The field value
- Throws:
NullPointerException- Thrown if the field isnull.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readField
Reads the namedpublicField. Superclasses will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.- Returns:
- The value of the field.
- Throws:
NullPointerException- Thrown if the target isnull.IllegalArgumentException- Thrown if the field name isnull, blank, empty, or could not be found.IllegalAccessException- Thrown if the named field is notpublic.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readField
public static Object readField(Object target, String fieldName, boolean forceAccess) throws IllegalAccessException Reads the namedField. Superclasses will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Returns:
- The field value
- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown if the field name isnull, blank, empty, or could not be found.IllegalAccessException- Thrown if the named field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readStaticField
Reads the namedpublic staticField. Superclasses will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.- Returns:
- The value of the field.
- Throws:
NullPointerException- Thrown if the class isnull, or the field could not be found.IllegalArgumentException- Thrown if the field name isnull, blank or empty, or is notstatic.IllegalAccessException- Thrown if the field is not accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readStaticField
public static Object readStaticField(Class<?> cls, String fieldName, boolean forceAccess) throws IllegalAccessException Reads the namedstaticField. Superclasses will be considered.- Parameters:
cls- theClassto reflect, must not benull.fieldName- the field name to obtain.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Returns:
- The Field object.
- Throws:
NullPointerException- Thrown if the class isnull, or the field could not be found.IllegalArgumentException- Thrown if the field name isnull, blank or empty, or is notstatic.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readStaticField
Reads an accessiblestaticField.- Parameters:
field- to read.- Returns:
- The field value.
- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown if the field is notstatic.IllegalAccessException- Thrown if the field is not accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
readStaticField
public static Object readStaticField(Field field, boolean forceAccess) throws IllegalAccessException Reads a staticField.- Parameters:
field- to read.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.- Returns:
- The field value.
- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown if the field is notstatic.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
removeFinalModifier
Removes the final modifier from aField.- Parameters:
field- to remove the final modifier.- Throws:
NullPointerException- Thrown if the field isnull.SecurityException- Thrown if an underlying accessible object's method denies the request.- Since:
- 3.2
- See Also:
-
removeFinalModifier
Deprecated.As of Java 12, we can no longer drop thefinalmodifier, thus rendering this method obsolete. The JDK discussion about this change can be found here: https://mail.openjdk.java.net/pipermail/core-libs-dev/2018-November/056486.htmlRemoves the final modifier from aField.- Parameters:
field- to remove the final modifier.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown if the field isnull.SecurityException- Thrown if an underlying accessible object's method denies the request.- Since:
- 3.3
- See Also:
-
writeDeclaredField
public static void writeDeclaredField(Object target, String fieldName, Object value) throws IllegalAccessException Writes apublicField. Only the specified class will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.value- the new value.- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, or could not be found, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeDeclaredField
public static void writeDeclaredField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException Writes apublicField. Only the specified class will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.value- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, or could not be found, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeDeclaredStaticField
public static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException Writes a namedpublic staticField. Only the specified class will be considered.- Parameters:
cls-Classon which the field is to be found.fieldName- to write.value- the new value.- Throws:
NullPointerException- Thrown ifclsisnullor the field cannot be located.IllegalArgumentException- Thrown if the field name isnull, blank, empty, notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is notpublicor isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeDeclaredStaticField
public static void writeDeclaredStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException Writes a namedstaticField. Only the specified class will be considered.- Parameters:
cls-Classon which the field is to be found.fieldName- to writevalue- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject#setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown ifclsisnullor the field cannot be located.IllegalArgumentException- Thrown if the field name isnull, blank, empty, notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible or isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeField
public static void writeField(Field field, Object target, Object value) throws IllegalAccessException Writes an accessibleField.- Parameters:
field- to write.target- the object to call on, may benullforstaticfields.value- the new value.- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown ifvalueis not assignable.IllegalAccessException- Thrown if the field is not accessible or isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeField
public static void writeField(Field field, Object target, Object value, boolean forceAccess) throws IllegalAccessException Writes aField.- Parameters:
field- to write.target- the object to call on, may benullforstaticfieldsvalue- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown ifvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible or isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeField
public static void writeField(Object target, String fieldName, Object value) throws IllegalAccessException Writes apublicField. Superclasses will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.value- the new value.- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank, empty, or could not be found, orvalueis not assignable.IllegalAccessException- Thrown if the field is not accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeField
public static void writeField(Object target, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException Writes aField. Superclasses will be considered.- Parameters:
target- the object to reflect, must not benull.fieldName- the field name to obtain.value- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank, empty, or could not be found, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeStaticField
public static void writeStaticField(Class<?> cls, String fieldName, Object value) throws IllegalAccessException Writes a namedpublic staticField. Superclasses will be considered.- Parameters:
cls-Classon which the field is to be found.fieldName- to write.value- the new value.- Throws:
NullPointerException- Thrown iftargetisnull.IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, the field cannot be located or is notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is notpublicor isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeStaticField
public static void writeStaticField(Class<?> cls, String fieldName, Object value, boolean forceAccess) throws IllegalAccessException Writes a namedstaticField. Superclasses will be considered.- Parameters:
cls-Classon which the field is to be found.fieldName- to write.value- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown ifclsisnullor the field cannot be located.IllegalArgumentException- Thrown iffieldNameisnull, blank or empty, the field notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible or isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeStaticField
Writes apublic staticField.- Parameters:
field- to write.value- the new value.- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown if the field is notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is notpublicor isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-
writeStaticField
public static void writeStaticField(Field field, Object value, boolean forceAccess) throws IllegalAccessException Writes a staticField.- Parameters:
field- to write.value- the new value.forceAccess- whether to break scope restrictions using theAccessibleObject.setAccessible(boolean)method.falsewill only matchpublicfields.- Throws:
NullPointerException- Thrown if the field isnull.IllegalArgumentException- Thrown if the field is notstatic, orvalueis not assignable.IllegalAccessException- Thrown if the field is not made accessible or isfinal.SecurityException- Thrown if an underlying accessible object's method denies the request.- See Also:
-