Java Tutorial - Java Script : Inspecting a Class

Java Tutorial - Java Script :

 Inspecting a Class

To bring all this material together, Listing 16.3 is a short Java application named MethodInspector that uses reflection to inspect the methods in a class.
The MethodInspector application displays information about the public methods in the class you specify at the command line (or MethodInspector itself, if you don’t specify a class). To try the program, enter the following at a command line:
java MethodInspector java.util.Random
If you run the application on the java.util.Random class, the program’s output is the following (with some methods omitted):

Method: writeObject()
Modifiers: private synchronized
Return Type: void
Parameters: java.io.ObjectOutputStream
Method: next()
Modifiers: protected
Return Type: int
Parameters: int
...
Method: setSeed()
Modifiers: public synchronized
Return Type: void
Parameters: long
By using reflection, the MethodInspector application can learn every method of a class. A Class object is created in lines 7–10 of the application. If a class name is specified as a command-line argument when MethodInspector is run, the Class.forName() method is called with that argument. Otherwise, MethodInspector is used as the argument. After the Class object is created, its getDeclaredMethods() method is used in line 11 to find all the methods contained in the class (with the exception of methods inherited from a superclass). These methods are stored as an array of Method objects. The for loop in lines 12–28 cycles through each method in the class, storing its return type, modifiers, and arguments and then displaying them. Displaying the return type is straightforward: Each method’s getReturnType() method is stored as a Class object in line 14, and that object’s name is displayed in line 26.
When a method’s getModifiers() method is called in line 15, an integer is returned that represents all modifiers used with the method. The class method Modifier.toString() takes this integer as an argument and returns the names of all modifiers associated with it. Lines 19–23 loop through the array of Class objects that represents the arguments associated with a method. The name of each argument is added to a StringBuffer object named params in line 22. Reflection is most commonly used By using reflectionby tools such as class browsers and debuggers as a way to learn more about the class of objects being browsed or debugged.