java.lang.reflect.Field Maven / Gradle / Ivy
/*
This is not an official specification document, and usage is restricted.
NOTICE
(c) 2005-2007 Sun Microsystems, Inc. All Rights Reserved.
Neither this file nor any files generated from it describe a complete
specification, and they may only be used as described below. For
example, no permission is given for you to incorporate this file, in
whole or in part, in an implementation of a Java specification.
Sun Microsystems Inc. owns the copyright in this file and it is provided
to you for informative, as opposed to normative, use. The file and any
files generated from it may be used to generate other informative
documentation, such as a unified set of documents of API signatures for
a platform that includes technologies expressed as Java APIs. The file
may also be used to produce "compilation stubs," which allow
applications to be compiled and validated for such platforms.
Any work generated from this file, such as unified javadocs or compiled
stub files, must be accompanied by this notice in its entirety.
This work corresponds to the API signatures of JSR 219: Foundation
Profile 1.1. In the event of a discrepency between this work and the
JSR 219 specification, which is available at
http://www.jcp.org/en/jsr/detail?id=219, the latter takes precedence.
*/
package java.lang.reflect;
/**
* A Field
provides information about, and dynamic access to, a
* single field of a class or an interface. The reflected field may
* be a class (static) field or an instance field.
*
*
A Field
permits widening conversions to occur during a get or
* set access operation, but throws an IllegalArgumentException
if a
* narrowing conversion would occur.
*
* @see Member
* @see java.lang.Class
* @see java.lang.Class#getFields()
* @see java.lang.Class#getField(String)
* @see java.lang.Class#getDeclaredFields()
* @see java.lang.Class#getDeclaredField(String)
*
* @author Nakul Saraiya
*/
public final class Field extends AccessibleObject implements Member
{
/*
* This hidden constructor does not necessarily correspond to
* a constructor in the original source file -- it keeps javadoc
* from generating an inappropriate default constructor.
*/
private Field() { }
/**
* Returns the Class
object representing the class or interface
* that declares the field represented by this Field
object.
*/
public Class getDeclaringClass() {
return null;
}
/**
* Returns the name of the field represented by this Field
object.
*/
public String getName() {
return null;
}
/**
* Returns the Java language modifiers for the field represented
* by this Field
object, as an integer. The Modifier
class should
* be used to decode the modifiers.
*
* @see Modifier
*/
public int getModifiers() {
return 0;
}
/**
* Returns a Class
object that identifies the
* declared type for the field represented by this
* Field
object.
*
* @return a Class
object identifying the declared
* type of the field represented by this object
*/
public Class getType() {
return null;
}
/**
* Compares this Field
against the specified object. Returns
* true if the objects are the same. Two Field
objects are the same if
* they were declared by the same class and have the same name
* and type.
*/
public boolean equals(Object obj) {
return false;
}
/**
* Returns a hashcode for this Field
. This is computed as the
* exclusive-or of the hashcodes for the underlying field's
* declaring class name and its name.
*/
public int hashCode() {
return 0;
}
/**
* Returns a string describing this Field
. The format is
* the access modifiers for the field, if any, followed
* by the field type, followed by a space, followed by
* the fully-qualified name of the class declaring the field,
* followed by a period, followed by the name of the field.
* For example:
*
* public static final int java.lang.Thread.MIN_PRIORITY
* private int java.io.FileDescriptor.fd
*
*
* The modifiers are placed in canonical order as specified by
* "The Java Language Specification". This is public,
* protected or private first, and then other
* modifiers in the following order: static, final,
* transient, volatile.
*/
public String toString() {
return null;
}
/**
* Returns the value of the field represented by this 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 enforces 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.
*
* @param obj object from which the represented field's value is
* to be extracted
* @return the value of the represented field in object
* obj; primitive values are wrapped in an appropriate
* object before being returned
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception IllegalArgumentException if the specified object is not an
* instance of the class or interface declaring the underlying
* field (or a subclass or implementor thereof).
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
*/
public Object get(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return null;
}
/**
* Gets the value of a static or instance boolean
field.
*
* @param obj the object to extract the boolean
value
* from
* @return the value of the boolean
field
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public boolean getBoolean(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return false;
}
/**
* Gets the value of a static or instance byte
field.
*
* @param obj the object to extract the byte
value
* from
* @return the value of the byte
field
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public byte getByte(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return ' ';
}
/**
* 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.
*
* @param obj the object to extract the char
value
* from
* @return the value of the field converted to type char
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public char getChar(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return ' ';
}
/**
* 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.
*
* @param obj the object to extract the short
value
* from
* @return the value of the field converted to type short
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public short getShort(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return -1;
}
/**
* 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.
*
* @param obj the object to extract the int
value
* from
* @return the value of the field converted to type int
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public int getInt(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return 0;
}
/**
* 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.
*
* @param obj the object to extract the long
value
* from
* @return the value of the field converted to type long
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public long getLong(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return -1;
}
/**
* 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.
*
* @param obj the object to extract the float
value
* from
* @return the value of the field converted to type float
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public float getFloat(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return 0.0f;
}
/**
* 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.
*
* @param obj the object to extract the double
value
* from
* @return the value of the field converted to type double
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#get
*/
public double getDouble(Object obj)
throws IllegalArgumentException, IllegalAccessException
{
return 0.0d;
}
/**
* Sets the field represented by this 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 enforces 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
.
*
*
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.
*
* @param obj the object whose field should be modified
* @param value the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
*/
public void set(Object obj, Object value)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a boolean
on the specified object.
* This method is equivalent to
* set(obj, zObj)
,
* where zObj
is a Boolean
object and
* zObj.booleanValue() == z
.
*
* @param obj the object whose field should be modified
* @param z the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setBoolean(Object obj, boolean z)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a byte
on the specified object.
* This method is equivalent to
* set(obj, bObj)
,
* where bObj
is a Byte
object and
* bObj.byteValue() == b
.
*
* @param obj the object whose field should be modified
* @param b the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setByte(Object obj, byte b)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a char
on the specified object.
* This method is equivalent to
* set(obj, cObj)
,
* where cObj
is a Character
object and
* cObj.charValue() == c
.
*
* @param obj the object whose field should be modified
* @param c the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setChar(Object obj, char c)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a short
on the specified object.
* This method is equivalent to
* set(obj, sObj)
,
* where sObj
is a Short
object and
* sObj.shortValue() == s
.
*
* @param obj the object whose field should be modified
* @param s the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setShort(Object obj, short s)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as an int
on the specified object.
* This method is equivalent to
* set(obj, iObj)
,
* where iObj
is a Integer
object and
* iObj.intValue() == i
.
*
* @param obj the object whose field should be modified
* @param i the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setInt(Object obj, int i)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a long
on the specified object.
* This method is equivalent to
* set(obj, lObj)
,
* where lObj
is a Long
object and
* lObj.longValue() == l
.
*
* @param obj the object whose field should be modified
* @param l the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setLong(Object obj, long l)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a float
on the specified object.
* This method is equivalent to
* set(obj, fObj)
,
* where fObj
is a Float
object and
* fObj.floatValue() == f
.
*
* @param obj the object whose field should be modified
* @param f the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setFloat(Object obj, float f)
throws IllegalArgumentException, IllegalAccessException
{ }
/**
* Sets the value of a field as a double
on the specified object.
* This method is equivalent to
* set(obj, dObj)
,
* where dObj
is a Double
object and
* dObj.doubleValue() == d
.
*
* @param obj the object whose field should be modified
* @param d the new value for the field of obj
* being modified
*
* @exception IllegalAccessException if the underlying field
* is inaccessible.
* @exception 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.
* @exception NullPointerException if the specified object is null
* and the field is an instance field.
* @exception ExceptionInInitializerError if the initialization provoked
* by this method fails.
* @see Field#set
*/
public void setDouble(Object obj, double d)
throws IllegalArgumentException, IllegalAccessException
{ }
}