/jEdit/tags/jedit-4-3-1/org/gjt/sp/jedit/bsh/commands/javap.bsh
# · Unknown · 62 lines · 54 code · 8 blank · 0 comment · 0 complexity · ce1710a4094235617e3ae6df6f43830e MD5 · raw file
- /**
- Print the public fields and methods of the specified class (output similar
- to the JDK javap command).
- <p/>
- If the argument is a string it is considered to be a class name. If the
- argument is an object, the class of the object is used. If the arg is a
- class, the class is used. If the argument is a class identifier, the class
- identified by the class identifier will be used. e.g. If the argument is
- the empty string an error will be printed.
- <p/>
- <pre>
- // equivalent
- javap( java.util.Date ); // class identifier
- javap( java.util.Date.class ); // class
- javap( "java.util.Date" ); // String name of class
- javap( new java.util.Date() ); // instance of class
- </pre>
- @method void javap( String | Object | Class | ClassIdentifier )
- */
- bsh.help.javap= "usage: javap( value )";
- import org.gjt.sp.jedit.bsh.ClassIdentifier;
- import java.lang.reflect.Modifier;
- javap( Object o )
- {
- Class clas;
- if ( o instanceof ClassIdentifier )
- clas = this.caller.namespace.identifierToClass(o);
- else if ( o instanceof String )
- {
- if ( o.length() < 1 ) {
- error("javap: Empty class name.");
- return;
- }
- clas = this.caller.namespace.getClass((String)o);
- } else if ( o instanceof Class )
- clas = o;
- else
- clas = o.getClass();
-
- print( "Class "+clas+" extends " +clas.getSuperclass() );
- this.dmethods=clas.getDeclaredMethods();
- //print("------------- Methods ----------------");
- for(int i=0; i<dmethods.length; i++) {
- this.m = dmethods[i];
- if ( Modifier.isPublic( m.getModifiers() ) )
- print( m );
- }
- //print("------------- Fields ----------------");
- this.fields=clas.getDeclaredFields();
- for(int i=0; i<fields.length; i++) {
- this.f = fields[i];
- if ( Modifier.isPublic( f.getModifiers() ) )
- print( f );
- }
- }