If you are writing a development tool such as a debugger, you must be able to obtain field values. This is a three-step process:
In the sample program, the name of the
Here is the source code for the sample program:
- Create a
Class
object. Retrieving Class Objects shows you how to do this. - Create a
Field
object by invokinggetField
upon theClass
object. For more information, see Identifying Class Fields. - Invoke one of the
get
methods upon theField
object.
Field
class has specialized methods for getting the values of primitive types. For example, the getInt
method returns the contents as an int
value, getFloat
returns a float
, and so forth. If an object is stored in the field instead of a primitive, then use the get
method to retrieve the object. The following sample program demonstrates the three steps listed previously. This program gets the value of the height
field from a Rectangle
object. Because the height
is a primitive type (int
), the object returned by the get
method is a wrapper object (Integer
). In the sample program, the name of the
height
field is known at compile time. However, in a development tool such as a GUI builder, the field name might not be known until run time. To find out what fields belong to a class, you can use the techniques described in Identifying Class Fields. Here is the source code for the sample program:
The output of the sample program verifies the value of theimport java.lang.reflect.*;
import java.awt.*;
class SampleGet {
public static void main(String[] args) {
Rectangle r = new Rectangle(100, 325);
printHeight(r);
}
static void printHeight(Rectangle r) {
Field heightField;
Integer heightValue;
Class c = r.getClass();
try {
heightField = c.getField("height");
heightValue = (Integer) heightField.get(r);
System.out.println("Height: " + heightValue.toString());
} catch (NoSuchFieldException e) {
System.out.println(e);
} catch (SecurityException e) {
System.out.println(e);
} catch (IllegalAccessException e) {
System.out.println(e);
}
}
}
height
field: Height: 325
No comments:
Post a Comment