Printing Class Information
Problem
You want to print all the information about a class, similar to the way javap does.
Solution
Get a Class
object, call its getFields( )
and
getMethods( )
, and print the results.
Discussion
The JDK includes a program called javap , the Java Printer. Sun’s JDK version normally prints the outline of a class file -- a list of its methods and fields -- but can also print out the Java bytecodes or machine instructions. The Kaffe package did not include a version of javap, so I wrote one and contributed it (see Example 25-8). The Kaffe folk have expanded it somewhat, but it still works basically the same. My version doesn’t print the bytecodes; it behaves rather like Sun’s behaves when you don’t give theirs any command-line options.
The getFields( )
and getMethods( )
methods
return array of Field
and Method
respectively; these are both in package
java.lang.reflect
. I use a
Modifiers
object to get details on the
permissions and storage
attributes of the fields and methods. In many implementations you can
bypass this, and simply call toString( )
in
each Field
and Method
object.
Doing it this way gives me a bit more control over the
formatting.
Example 25-8. MyJavaP.java
import java.io.*; import java.util.*; import java.lang.reflect.*; /** * JavaP prints structural information about classes. * For each class, all public fields and methods are listed. * "Reflectance" is used to look up the information. */ public class MyJavaP { /** A "Modifier" object, ...
Get Java Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.