/***
 * Uses the Reflection classes to display internal information about
 * any java class.
 * Please send any bug reports or enhancements to mitch[at]fincher[dot]org
 * @author Mitch Fincher
 *
**/
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////
public class DisplayClassInfo {
////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////
public static void main (String args[])
////////////////////////////////////////////////////////////////
  {
    if(args.length == 0)
      {
	System.out.println("usage: DisplayClassInfo <classname>" );
	System.out.println("example: java DisplayClassInfo java.awt.event.ItemEvent" );
	System.exit(1);
      }

    String myClassName = args[0];

    try {
      Class myClass = Class.forName(myClassName);
      System.out.println("***** Information on Class: "+myClassName+" *****");

      System.out.println(" *** Methods: ");
      java.lang.reflect.Method[] MethodArray = myClass.getDeclaredMethods();
      for(int i=0;i<MethodArray.length;i++)
	{
	  System.out.println("  " + MethodArray[i]);
	}

      System.out.println(" *** Constructors: ");
      java.lang.reflect.Constructor[] ConstructorArray = myClass.getConstructors();
      for(int i=0;i<ConstructorArray.length;i++)
	{
	  System.out.println("  " + ConstructorArray[i]);
	}

      System.out.println(" *** Fields: ");
      java.lang.reflect.Field[] FieldArray = myClass.getFields();
      for(int i=0;i<FieldArray.length;i++)
	{
	  System.out.println("  " + FieldArray[i]);
	}

      System.out.println(" *** Interfaces: ");
      Class[] InterfaceArray = myClass.getInterfaces();
      for(int i=0;i<InterfaceArray.length;i++)
	{
	  System.out.println("  " + InterfaceArray[i]);
	}


    }
    catch(Exception ex){ System.err.println("" + ex);}
  }
  

} // DisplayClassInfo
