import java.lang.reflect.*;
import javax.swing.*;public class ReflectionTest
{
    public static void main(String[] args)
    {
        String name;
        if(args.length > 0)
            name = args[0];
         else
            name = JOptionPane.showInputDialog("Class name (e.g. java.util.Date): ");
            
         try
         {
             Class c1 = Class.forName(name);
             Class superc1 = c1.getSuperclass();
             System.out.print("class "+name);
             if(superc1 != null && superc1 != Object.class)
                 System.out.println(" extends " + superc1.getName());
               
             System.out.print("\n{\n");
             printConstructors(c1);
             System.out.println();
             printMethods(c1);
             System.out.println();
             printFields(c1);
             System.out.println("}");
         }
         catch(ClassNotFoundException e) {e.printStackTrace();}
         System.exit(0);
    }
    
    public static void printConstructors(Class c1)
    {
        Constructor[] constructors = c1.getDeclaredConstructors();
        
        for(int i=0;i<constructors.length;i++)
        {
            Constructor c = constructors[i];
            String name = c.getName();
            System.out.print(Modifier.toString(c.getModifiers()));
            System.out.print("  " + name + "(");
            
            Class[] paramTypes = c.getParameterTypes();
            for(int j=0; j<paramTypes.length; j++)
            {
                if (j>0) System.out.print(", ");
                System.out.print(paramTypes[j].getName());
            }
            System.out.println(");");
        }
    }
    
    public static void printMethods(Class c1)
    {
        Method[] methods = c1.getDeclaredMethods();
        
        for(int i=0; i < methods.length; i++)
        {
            Method m = methods[i];
            Class retType = m.getReturnType();
            String name = m.getName();
            
            System.out.print(Modifier.toString(m.getModifiers()));
            System.out.print("  " + retType.getName() + " " + name + "(");
            
            Class[] paramTypes = m.getParameterTypes();
            for(int j=0;j<paramTypes.length;i++)
            {
                if(j>0) System.out.print(", ");
                System.out.print(paramTypes[j].getName());
            }
            System.out.println(");");
        }
    }
    
    public static void printFields(Class c1)
    {
        Field[] fields = c1.getDeclaredFields();
        
        for(int i = 0;i< fields.length;i++)
        {
            Field f = fields[i];
            Class type = f.getType();
            String name = f.getName();
            System.out.print(Modifier.toString(f.getModifiers()));
            System.out.print("  "+type.getName() +" "+name+";");
        }
    }
}这个程序报错,问题是处再printMethods()方法里面 就是不知错在哪里???? 谢谢

解决方案 »

  1.   

    sorry;我运行这个程序没有问题;
      

  2.   

    for(int j=0;j<paramTypes.length;i++) //<--j++???
                {
      

  3.   

    以后写代码,尽量用IDE里面的模版比如JB 输入fora然后Ctrl+J
    就出来了
    for (int i = 0; i < .length; i++) {}Eclipse里面也是输入for,也会出现相应的模版
      

  4.   

    IDE确实可以避免大部分语法错误;日食就是个非常不错的IDE开发环境,比起jbuilder要好用点
      

  5.   

    楼主,shine333帮你找到问题了,尽快结帐:)