java.lang.reflect
Class Field
- AnnotatedElement, Member
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.
boolean | equals(Object fld) - Compare two objects to see if they are semantically equivalent.
|
| extends Annotation> T getAnnotation(Class annoClass)
|
Object | get(Object obj) - Get the value of this Field.
|
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()
|
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.
|
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
equals
public boolean equals(Object fld)
Compare two objects to see if they are semantically equivalent.
Two Fields are semantically equivalent if they have the same declaring
class, name, and type. Since you can't creat a Field except through
the VM, this is just the == relation.
- equals in interface Object
true
if they are equal; false
if not
get
public Object get(Object obj)
throws IllegalAccessException
Get the value of this Field. If it is primitive, it will be wrapped
in the appropriate wrapper type (boolean = java.lang.Boolean).
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.
getDeclaringClass
public Class> getDeclaringClass()
Gets the class that declared this field, or the class where this field
is a non-inherited member.
- getDeclaringClass in interface Member
- the class that declared this member
getGenericType
public Type getGenericType()
Return the generic type of the field. If the field type is not a generic
type, the method returns the same as getType()
.
getModifiers
public int getModifiers()
Gets the modifiers this field uses. Use the 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
- an integer representing the modifiers to this Member
getType
public Class> getType()
Gets the type of this field.
hashCode
public int hashCode()
Get the hash code for the Field. The Field hash code is the hash code
of its name XOR'd with the hash code of its class name.
- hashCode in interface Object
- the hash code for the object.
isEnumConstant
public boolean isEnumConstant()
Return true if this field represents an enum constant,
false otherwise.
set
public void set(Object object,
Object value)
throws IllegalAccessException
Set the value of this Field. If it is a primitive field, the value
will be unwrapped from the passed object (boolean = java.lang.Boolean).
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.
value
- 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 fieldNullPointerException
- if o
is null and this field
requires an instance
setBoolean(Object,boolean)
, setByte(Object,byte)
, setChar(Object,char)
, setShort(Object,short)
, setInt(Object,int)
, setLong(Object,long)
, setFloat(Object,float)
, setDouble(Object,double)
toString
public String toString()
Get a String representation of the Field. A Field's String
representation is "<modifiers> <type>
<class>.<fieldname>".
Example:
public transient boolean gnu.parse.Parser.parseComplete
- toString in interface Object
- the String representation of the Field
java.lang.reflect.Field - reflection of Java fields
Copyright (C) 1998, 2001, 2005, 2006 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.