public class FieldAccessor
extends java.lang.Object
Field class in the Java Reflection API.
This class provides methods to access the value of a field, set the value of a field without
requiring a try-catch block. Any IllegalAccessException is caught and rethrown as a
WrappedReflectiveOperationException.
| Constructor and Description |
|---|
FieldAccessor(@NotNull java.lang.reflect.Field field) |
| Modifier and Type | Method and Description |
|---|---|
@Nullable java.lang.Object |
get(@Nullable java.lang.Object obj)
Returns the value of the field represented by this
Field, on the specified object. |
boolean |
getBoolean(@Nullable java.lang.Object obj)
Gets the value of a static or instance
boolean field. |
byte |
getByte(@Nullable java.lang.Object obj)
Gets the value of a static or instance
byte field. |
char |
getChar(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
char or of another primitive type convertible to type char via a widening conversion. |
double |
getDouble(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
double or of another primitive type convertible to type double via a widening conversion. |
@NotNull java.lang.reflect.Field |
getField()
Returns the
Field object that this FieldAccessor object represents. |
float |
getFloat(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
float or of another primitive type convertible to type float via a widening conversion. |
int |
getInt(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
int or of another primitive type convertible to type int via a widening conversion. |
long |
getLong(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
long or of another primitive type convertible to type long via a widening conversion. |
short |
getShort(@Nullable java.lang.Object obj)
Gets the value of a static or instance field of type
short or of another primitive type convertible to type short via a widening conversion. |
void |
set(@Nullable java.lang.Object obj,
@Nullable java.lang.Object value)
Sets the field represented by this
Field object on the specified object argument to the specified new value. |
void |
setBoolean(@Nullable java.lang.Object obj,
boolean z)
Sets the value of a field as a
boolean on the specified object. |
void |
setByte(@Nullable java.lang.Object obj,
byte b)
Sets the value of a field as a
byte on the specified object. |
void |
setChar(@Nullable java.lang.Object obj,
char c)
Sets the value of a field as a
char on the specified object. |
void |
setDouble(@Nullable java.lang.Object obj,
double d)
Sets the value of a field as a
double on the specified object. |
void |
setFloat(@Nullable java.lang.Object obj,
float f)
Sets the value of a field as a
float on the specified object. |
void |
setInt(@Nullable java.lang.Object obj,
int i)
Sets the value of a field as an
int on the specified object. |
void |
setLong(@Nullable java.lang.Object obj,
long l)
Sets the value of a field as a
long on the specified object. |
void |
setShort(@Nullable java.lang.Object obj,
short s)
Sets the value of a field as a
short on the specified object. |
public FieldAccessor(@NotNull
@NotNull java.lang.reflect.Field field)
@NotNull public @NotNull java.lang.reflect.Field getField()
Field object that this FieldAccessor object represents.Field objectpublic boolean getBoolean(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
boolean field.obj - the object to extract the boolean value fromboolean fieldWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type boolean by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)@Nullable
public @Nullable java.lang.Object get(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
Field, on the specified object. The value is automatically wrapped in an object if it has a primitive type.
The underlying field's value is obtained as follows:
If the underlying field is a static field, the obj argument
is ignored; it may be null.
Otherwise, the underlying field is an instance field. If the
specified obj argument is null, the method throws a NullPointerException. If the specified object is not an instance of the class or interface declaring the underlying field, the
method throws an IllegalArgumentException.
If this Field object is enforcing Java language access control, and
the underlying field is inaccessible, the method throws an IllegalAccessException. If the underlying field is static, the class that declared the field is initialized if it has not already
been initialized.
Otherwise, the value is retrieved from the underlying instance or static field. If the field has a primitive type, the value is wrapped in an object before being returned, otherwise it is returned as is.
If the field is hidden in the type of obj,
the field's value is obtained according to the preceding rules.
obj - object from which the represented field's value is to be extractedobj; primitive values are wrapped in an appropriate object before being returnedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof).java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.public void set(@Nullable
@Nullable java.lang.Object obj,
@Nullable
@Nullable java.lang.Object value)
throws java.lang.IllegalArgumentException
Field object on the specified object argument to the specified new value. The new value is automatically unwrapped if the underlying field has a primitive
type.
The operation proceeds as follows:
If the underlying field is static, the obj argument is
ignored; it may be null.
Otherwise the underlying field is an instance field. If the
specified object argument is null, the method throws a NullPointerException. If the specified object argument is not an instance of the class or interface declaring the underlying field,
the method throws an IllegalArgumentException.
If this Field object is enforcing Java language access control, and
the underlying field is inaccessible, the method throws an IllegalAccessException.
If the underlying field is final, the method throws an
IllegalAccessException unless setAccessible(true) has succeeded for this Field object and the field is non-static. Setting a final field in this way is meaningful only
during deserialization or reconstruction of instances of classes with blank final fields, before they are made available for access by other parts of a program. Use in any other context may have
unpredictable effects, including cases in which other parts of a program continue to use the original value of this field.
If the underlying field is of a primitive type, an unwrapping
conversion is attempted to convert the new value to a value of a primitive type. If this attempt fails, the method throws an IllegalArgumentException.
If, after possible unwrapping, the new value cannot be
converted to the type of the underlying field by an identity or widening conversion, the method throws an IllegalArgumentException.
If the underlying field is static, the class that declared the field is initialized if it has not already been initialized.
The field is set to the possibly unwrapped and widened new value.
If the field is hidden in the type of obj,
the field's value is set according to the preceding rules.
obj - the object whose field should be modifiedvalue - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.public void setFloat(@Nullable
@Nullable java.lang.Object obj,
float f)
throws java.lang.IllegalArgumentException
float on the specified object. This method is equivalent to set(obj, fObj), where fObj is a Float object and
fObj.floatValue() == f.obj - the object whose field should be modifiedf - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public byte getByte(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
byte field.obj - the object to extract the byte value frombyte fieldWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type byte by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public void setBoolean(@Nullable
@Nullable java.lang.Object obj,
boolean z)
throws java.lang.IllegalArgumentException
boolean on the specified object. This method is equivalent to set(obj, zObj), where zObj is a Boolean object and
zObj.booleanValue() == z.obj - the object whose field should be modifiedz - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public char getChar(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
char or of another primitive type convertible to type char via a widening conversion.obj - the object to extract the char value fromcharWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type char by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public void setDouble(@Nullable
@Nullable java.lang.Object obj,
double d)
throws java.lang.IllegalArgumentException
double on the specified object. This method is equivalent to set(obj, dObj), where dObj is a Double object and
dObj.doubleValue() == d.obj - the object whose field should be modifiedd - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public void setByte(@Nullable
@Nullable java.lang.Object obj,
byte b)
throws java.lang.IllegalArgumentException
byte on the specified object. This method is equivalent to set(obj, bObj), where bObj is a Byte object and
bObj.byteValue() == b.obj - the object whose field should be modifiedb - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public short getShort(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
short or of another primitive type convertible to type short via a widening conversion.obj - the object to extract the short value fromshortWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type short by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public void setChar(@Nullable
@Nullable java.lang.Object obj,
char c)
throws java.lang.IllegalArgumentException
char on the specified object. This method is equivalent to set(obj, cObj), where cObj is a Character object and
cObj.charValue() == c.obj - the object whose field should be modifiedc - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public int getInt(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
int or of another primitive type convertible to type int via a widening conversion.obj - the object to extract the int value fromintWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type int by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public long getLong(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
long or of another primitive type convertible to type long via a widening conversion.obj - the object to extract the long value fromlongWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type long by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public void setShort(@Nullable
@Nullable java.lang.Object obj,
short s)
throws java.lang.IllegalArgumentException
short on the specified object. This method is equivalent to set(obj, sObj), where sObj is a Short object and
sObj.shortValue() == s.obj - the object whose field should be modifieds - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public void setInt(@Nullable
@Nullable java.lang.Object obj,
int i)
throws java.lang.IllegalArgumentException
int on the specified object. This method is equivalent to set(obj, iObj), where iObj is a Integer object and
iObj.intValue() == i.obj - the object whose field should be modifiedi - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)public float getFloat(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
float or of another primitive type convertible to type float via a widening conversion.obj - the object to extract the float value fromfloatWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type float by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public double getDouble(@Nullable
@Nullable java.lang.Object obj)
throws java.lang.IllegalArgumentException
double or of another primitive type convertible to type double via a widening conversion.obj - the object to extract the double value fromdoubleWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is inaccessible.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if the field value
cannot be converted to the type double by a widening conversion.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.get(java.lang.Object)public void setLong(@Nullable
@Nullable java.lang.Object obj,
long l)
throws java.lang.IllegalArgumentException
long on the specified object. This method is equivalent to set(obj, lObj), where lObj is a Long object and
lObj.longValue() == l.obj - the object whose field should be modifiedl - the new value for the field of obj being modifiedWrappedReflectiveOperationException - if this Field object is enforcing Java language access control and the underlying field is either inaccessible or final.java.lang.IllegalArgumentException - if the specified object is not an instance of the class or interface declaring the underlying field (or a subclass or implementor thereof), or if an unwrapping
conversion fails.java.lang.NullPointerException - if the specified object is null and the field is an instance field.java.lang.ExceptionInInitializerError - if the initialization provoked by this method fails.Field.set(java.lang.Object, java.lang.Object)