package wym;
import java.lang.reflect.*;
import java.util.*;
public class ReflectionTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String name;
Scanner in = new Scanner(System.in);
System.out.print("Enter a class name(e.g. java.util.Date): ");
name = in.next();
//pring class name and supper class name (if != null)
try {
Class cl = Class.forName(name);
Class supperCl = cl.getSuperclass();
System.out.print("Class name: "+name);
if (cl != null && supperCl != Object.class)
System.out.print(" Extends "+supperCl.getName());
System.out.println("\n{\n");
printConstructors(cl);
System.out.println();
printMethods(cl);
System.out.println();
printFields(cl);
System.out.println("}");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void printConstructors(Class cl) {
// TODO Auto-generated method stub
Constructor[] constructors = cl.getDeclaredConstructors();
for(Constructor c:constructors) {
String name = c.getName();
System.out.print("\t"+Modifier.toString(c.getModifiers()));
System.out.print(" "+name+" (");
//print parameter types
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(");");
}
}
private static void printMethods(Class cl) {
// TODO Auto-generated method stub
Method[] methods = cl.getDeclaredMethods();
for(Method m: methods) {
Class reType = m.getReturnType();
String name = m.getName();
//print modifier, return type and name
System.out.print("\t"+Modifier.toString(m.getModifiers()));
System.out.print(" "+reType.getName()+" "+name+" (");
//print parameter types
Class[] paramTypes = m.getParameterTypes();
for (int j=0;j<paramTypes.length;j++) {
if(j>0) System.out.print(", ");
System.out.print(paramTypes[j].getName());
}
System.out.println(");");
}
}
private static void printFields(Class cl) {
// TODO Auto-generated method stub
Field[] fields = cl.getDeclaredFields();
for (Field f: fields) {
Class type = f.getType();
String name = f.getName();
System.out.print("\t" + Modifier.toString(f.getModifiers()));
System.out.println(" " + type + " " + name + ";");
}
}
}
Java 反射Reflection
最新推荐文章于 2025-04-09 14:08:39 发布