|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.reflect.AccessibleObject
java.lang.reflect.Field
public final class Field
The Field class represents a member variable of a class. It also allows
dynamic access to a member, via reflection. This works for both
static and instance fields. Operations on Field objects know how to
do widening conversions, but throw IllegalArgumentException
if
a narrowing conversion would be necessary. You can query for information
on this Field regardless of location, but get and set access may be limited
by Java language access controls. If you can't do it in the compiler, you
can't normally do it here either.
Note: This class returns and accepts types as Classes, even
primitive types; there are Class types defined that represent each
different primitive type. They are java.lang.Boolean.TYPE,
java.lang.Byte.TYPE,
, also available as boolean.class,
byte.class
, etc. These are not to be confused with the
classes java.lang.Boolean, java.lang.Byte
, etc., which are
real classes.
Also note that this is not a serializable class. It is entirely feasible to make it serializable using the Externalizable interface, but this is on Sun, not me.
Member
,
Class
,
Class.getField(String)
,
Class.getDeclaredField(String)
,
Class.getFields()
,
Class.getDeclaredFields()
Field Summary |
---|
Fields inherited from interface java.lang.reflect.Member |
---|
DECLARED, PUBLIC |
Method Summary | ||
---|---|---|
boolean |
equals(Object fld)
Compare two objects to see if they are semantically equivalent. |
|
Object |
get(Object obj)
Get the value of this Field. |
|
|
getAnnotation(Class<T> annoClass)
Returns the element's annotation for the specified annotation type, or null if no such annotation exists. |
|
boolean |
getBoolean(Object obj)
Get the value of this boolean Field. |
|
byte |
getByte(Object obj)
Get the value of this byte Field. |
|
char |
getChar(Object obj)
Get the value of this Field as a char. |
|
Annotation[] |
getDeclaredAnnotations()
Returns all annotations directly defined by the element. |
|
Class<?> |
getDeclaringClass()
Gets the class that declared this field, or the class where this field is a non-inherited member. |
|
double |
getDouble(Object obj)
Get the value of this Field as a double. |
|
float |
getFloat(Object obj)
Get the value of this Field as a float. |
|
Type |
getGenericType()
Return the generic type of the field. |
|
int |
getInt(Object obj)
Get the value of this Field as an int. |
|
long |
getLong(Object obj)
Get the value of this Field as a long. |
|
int |
getModifiers()
Gets the modifiers this field uses. |
|
String |
getName()
Gets the name of this field. |
|
short |
getShort(Object obj)
Get the value of this Field as a short. |
|
Class<?> |
getType()
Gets the type of this field. |
|
int |
hashCode()
Get the hash code for the Field. |
|
boolean |
isEnumConstant()
Return true if this field represents an enum constant, false otherwise. |
|
boolean |
isSynthetic()
Return true if this field is synthetic, false otherwise. |
|
void |
set(Object object,
Object value)
Set the value of this Field. |
|
void |
setBoolean(Object obj,
boolean b)
Set this boolean Field. |
|
void |
setByte(Object obj,
byte b)
Set this byte Field. |
|
void |
setChar(Object obj,
char c)
Set this char Field. |
|
void |
setDouble(Object obj,
double d)
Set this double Field. |
|
void |
setFloat(Object obj,
float f)
Set this float Field. |
|
void |
setInt(Object obj,
int i)
Set this int Field. |
|
void |
setLong(Object obj,
long l)
Set this long Field. |
|
void |
setShort(Object obj,
short s)
Set this short Field. |
|
String |
toGenericString()
|
|
String |
toString()
Get a String representation of the Field. |
Methods inherited from class java.lang.reflect.AccessibleObject |
---|
getAnnotations, isAccessible, isAnnotationPresent, setAccessible, setAccessible |
Methods inherited from class java.lang.Object |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
Method Detail |
---|
public Class<?> getDeclaringClass()
getDeclaringClass
in interface Member
public String getName()
getName
in interface Member
public int getModifiers()
Modifier
class to interpret the values. A field can only have a subset of the
following modifiers: public, private, protected, static, final,
transient, and volatile.
getModifiers
in interface Member
Modifier
public boolean isSynthetic()
isSynthetic
in interface Member
public boolean isEnumConstant()
public Class<?> getType()
public boolean equals(Object fld)
equals
in class Object
o
- the object to compare to
true
if they are equal; false
if notObject.hashCode()
public int hashCode()
hashCode
in class Object
Object.equals(Object)
,
System.identityHashCode(Object)
public String toString()
public transient boolean gnu.parse.Parser.parseComplete
toString
in class Object
Object.getClass()
,
Object.hashCode()
,
Class.getName()
,
Integer.toHexString(int)
public String toGenericString()
public Object get(Object obj) throws IllegalAccessException
If the field is static, o
will be ignored. Otherwise, if
o
is null, you get a NullPointerException
,
and if it is incompatible with the declaring class of the field, you
get an IllegalArgumentException
.
Next, if this Field enforces access control, your runtime context is
evaluated, and you may have an IllegalAccessException
if
you could not access this field in similar compiled code. If the field
is static, and its class is uninitialized, you trigger class
initialization, which may end in a
ExceptionInInitializerError
.
Finally, the field is accessed, and primitives are wrapped (but not necessarily in new objects). This method accesses the field of the declaring class, even if the instance passed in belongs to a subclass which declares another field to hide this one.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if o
is not an instance of
the class or interface declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedgetBoolean(Object)
,
getByte(Object)
,
getChar(Object)
,
getShort(Object)
,
getInt(Object)
,
getLong(Object)
,
getFloat(Object)
,
getDouble(Object)
public boolean getBoolean(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a boolean field of
o
, or if o
is not an instance of the
declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public byte getByte(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte field of
o
, or if o
is not an instance of the
declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public char getChar(Object obj) throws IllegalAccessException
o
will be ignored.
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a char field of
o
, or if o
is not an instance
of the declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public short getShort(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte or short
field of o
, or if o
is not an instance
of the declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public int getInt(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte, short, char, or
int field of o
, or if o
is not an
instance of the declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public long getLong(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte, short, char, int,
or long field of o
, or if o
is not an
instance of the declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public float getFloat(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte, short, char, int,
long, or float field of o
, or if o
is
not an instance of the declaring class of this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public double getDouble(Object obj) throws IllegalAccessException
o
will be ignored.
o
- the object to get the value of this Field from
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte, short, char, int,
long, float, or double field of o
, or if
o
is not an instance of the declaring class of this
field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedget(Object)
public void set(Object object, Object value) throws IllegalAccessException
If the field is static, o
will be ignored. Otherwise, if
o
is null, you get a NullPointerException
,
and if it is incompatible with the declaring class of the field, you
get an IllegalArgumentException
.
Next, if this Field enforces access control, your runtime context is
evaluated, and you may have an IllegalAccessException
if
you could not access this field in similar compiled code. This also
occurs whether or not there is access control if the field is final.
If the field is primitive, and unwrapping your argument fails, you will
get an IllegalArgumentException
; likewise, this error
happens if value
cannot be cast to the correct object type.
If the field is static, and its class is uninitialized, you trigger class
initialization, which may end in a
ExceptionInInitializerError
.
Finally, the field is set with the widened value. This method accesses the field of the declaring class, even if the instance passed in belongs to a subclass which declares another field to hide this one.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if value
cannot be
converted by a widening conversion to the underlying type of
the Field, or if o
is not an instance of the class
declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedsetBoolean(Object, boolean)
,
setByte(Object, byte)
,
setChar(Object, char)
,
setShort(Object, short)
,
setInt(Object, int)
,
setLong(Object, long)
,
setFloat(Object, float)
,
setDouble(Object, double)
public void setBoolean(Object obj, boolean b) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a boolean field, or if
o
is not an instance of the class declaring this
field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setByte(Object obj, byte b) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a byte, short, int, long,
float, or double field, or if o
is not an instance
of the class declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setChar(Object obj, char c) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a char, int, long,
float, or double field, or if o
is not an instance
of the class declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setShort(Object obj, short s) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a short, int, long,
float, or double field, or if o
is not an instance
of the class declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setInt(Object obj, int i) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not an int, long, float, or
double field, or if o
is not an instance of the
class declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setLong(Object obj, long l) throws IllegalArgumentException, IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a long, float, or double
field, or if o
is not an instance of the class
declaring this field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setFloat(Object obj, float f) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a float or long field, or
if o
is not an instance of the class declaring this
field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public void setDouble(Object obj, double d) throws IllegalAccessException
o
will be
ignored.
o
- the object to set this Field onvalue
- the value to set this Field to
IllegalAccessException
- if you could not normally access this field
(i.e. it is not public)
IllegalArgumentException
- if this is not a double field, or if
o
is not an instance of the class declaring this
field
NullPointerException
- if o
is null and this field
requires an instance
ExceptionInInitializerError
- if accessing a static field triggered
class initialization, which then failedset(Object, Object)
public Type getGenericType()
getType()
.
GenericSignatureFormatError
- if the generic signature does
not conform to the format specified in the Virtual Machine
specification, version 3.public <T extends Annotation> T getAnnotation(Class<T> annoClass)
AccessibleObject
Returns the element's annotation for the specified annotation type,
or null
if no such annotation exists.
This method must be overridden by subclasses to provide appropriate behaviour.
getAnnotation
in interface AnnotatedElement
getAnnotation
in class AccessibleObject
annoClass
- the type of annotation to look for.
null
if no such annotation exists.public Annotation[] getDeclaredAnnotations()
AccessibleObject
Returns all annotations directly defined by the element. If there are no annotations directly associated with the element, then a zero-length array will be returned. The returned array may be modified by the client code, but this will have no effect on the annotation content of this class, and hence no effect on the return value of this method for future callers.
This method must be overridden by subclasses to provide appropriate behaviour.
getDeclaredAnnotations
in interface AnnotatedElement
getDeclaredAnnotations
in class AccessibleObject
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |