您的位置:首页 > 编程语言 > Java开发

java反射读取一个类

2014-01-14 14:30 169 查看
import java.util.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

public class ReflectionTest {
@SuppressWarnings("unchecked")
public static void main(String[] args){
String className ;
Scanner in = new Scanner(System.in);
className = in.next();
try {
Class c = Class.forName(className);
Class superc = c.getSuperclass();
String modifiers = Modifier.toString(c.getModifiers());
if(modifiers.length() > 0 ) System.out.print(modifiers + " ");
System.out.print(c.getName() + " extends ");
if(superc != null && superc != Object.class) System.out.println(superc.getName() + "{");
System.out.println();
printStructor(c);
printMethod(c);
printFields(c);
} catch (Exception e) {
}
}

@SuppressWarnings("unchecked")
public static void printStructor(Class cl){
Constructor[] constructor = cl.getDeclaredConstructors();
for(Constructor c : constructor){
String name = c.getName();
String modifier = Modifier.toString(c.getModifiers());
System.out.print("\t" + modifier + " " + name + "(");
Class[] paramType = c.getParameterTypes();
for(int i=0;i<paramType.length;i++){
if(i > 0){
System.out.print(",");
}
System.out.print(paramType[i].getName());
}
System.out.println(");\n");
}
}

@SuppressWarnings("unchecked")
public static void printMethod(Class cl){
Method[] method = cl.getDeclaredMethods();
for(Method m : method){
Class retType = m.getReturnType();
String modifier = Modifier.toString(cl.getModifiers());
String name = m.getName();
System.out.print("\t" + modifier + " " + retType.getName() + " " + name + "(");
Class[] clazz = m.getParameterTypes();
for(int i=0;i<clazz.length;i++){
if(i > 0){
System.out.print(",");
}
System.out.print(clazz[i].getName());
}
System.out.println(");\n");
}
}

public static void printFields(Class cl){
Field[] f = cl.getDeclaredFields();
for(int i=0;i<f.length;i++){
String modifier = Modifier.toString(f[i].getModifiers());
Class type = f[i].getType();
System.out.println("\t" + modifier + " " + type.getName() + " " + f[i].getName() + ";\n");
}
System.out.println("}");
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息