wnzz95391511 发表于 2013-2-5 02:13:48

使用Java反射机制得到类的结构信息

使用Java反射机制得到类的结构信息
代码如下:
package com.youdao.wm;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.lang.reflect.Modifier;/** * java反射机制测试:打印类的构造函数、方法、属性的信息 ** @author jacky **/public class ReflectionTest {public static void main(String[] args) {// 要打印的类名String name = "java.lang.Double";try {// 得到此类对应的ClassClass c1 = Class.forName(name);// 得到此类的父类Class superc1 = c1.getSuperclass();System.out.print("class " + name);// 如果超类不为空且不是Objectif (superc1 != null && superc1 != Object.class) {System.out.print("extends " + superc1.getName());}System.out.print("\n{\n");// 打印此类的构造函数信息printConstructors(c1);System.out.println();// 打印此类的方法信息printMethods(c1);System.out.println();// 打印此类的属性信息printFields(c1);System.out.print("\n}\n");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 打印Class对应类的构造函数信息 ** @param c1 *            Class */public static void printConstructors(Class c1) {Constructor[] constructors = c1.getDeclaredConstructors();for (Constructor c : constructors) {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.getName());}System.out.println(");");}}/** * 打印Class对应类的所有方法信息 ** @param c1 *            Class */public static void printMethods(Class c1) {Method[] methods = c1.getDeclaredMethods();for (Method method : methods) {Class retType = method.getReturnType();String name = method.getName();System.out.print("   " + Modifier.toString(method.getModifiers()));System.out.print(" " + retType.getName() + " " + name + "(");Class[] paramTypes = method.getParameterTypes();for (int j = 0; j < paramTypes.length; j++) {if (j > 0)System.out.print(", ");System.out.print(paramTypes.getName());}System.out.println(");");}}/** * 打印Class对应类的属性信息 ** @param c1 *            Class */public static void printFields(Class c1) {Field[] fields = c1.getDeclaredFields();for (Field f : fields) {Class classType = f.getType();System.out.print("   " + Modifier.toString(f.getModifiers()));System.out.print(" " + classType.getName() + " " + f.getName());System.out.println(";\n");}}}
页: [1]
查看完整版本: 使用Java反射机制得到类的结构信息