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()方法里面 就是不知错在哪里???? 谢谢
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()方法里面 就是不知错在哪里???? 谢谢
{
就出来了
for (int i = 0; i < .length; i++) {}Eclipse里面也是输入for,也会出现相应的模版