java反射读取一个类

package com.core.ch5;

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("}");
}
}

猜你喜欢

转载自chenshengzun.iteye.com/blog/1164535