Simple Relection

来源:互联网 发布:知豆新能源汽车logo 编辑:程序博客网 时间:2024/06/05 23:59

package relection;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;

public class TestReflection01 {

 public static void main(String[] args) {
  System.out.println("请输入类名:");
  Scanner scn = new Scanner(System.in);
  String className = scn.next();
  System.out.println("当前类名称是:" + className);

  try {
   Class c = Class.forName(className);

   Field[] fields = c.getDeclaredFields();
   System.out.println("解析属性信息----------------Field--------------");
   for (Field f : fields) {
    System.out.println("属性" + f.toString());
    System.out.println("/t数据类型" + f.getType());
    System.out.println("/t属性名" + f.getName());
    int modifier = f.getModifiers();
    System.out.println("/t属性修饰符" + Modifier.toString(modifier));
   }

   Method[] methods = c.getDeclaredMethods();
   System.out.println("解析方法信息--------------Method-----------------");
   for (Method m : methods) {
    System.out.println("方法" + m.toString());
    System.out.println("/t方法名" + m.getName());
    int modifier = c.getModifiers();
    System.out.println("/t方法修饰符:" + Modifier.toString(modifier));
    System.out.println("/t方法参数列表");
    Class[] clas = m.getParameterTypes();
    for(Class c2 : clas){
     System.out.println(c2.toString()+"/t");
    }
    System.out.println("返回值类型:"+m.getReturnType());
   }
   
   Constructor[] constructors = c.getDeclaredConstructors();
   System.out.println("解析构造方法----------------Constructor----------------");
   for(Constructor cs : constructors){
    System.out.println("构造方法"+cs.toString());
    System.out.println("/t构造方法名称:"+cs.getName());
    int modifier = cs.getModifiers();
    System.out.println("访问修饰符:"+Modifier.toString(modifier));
    System.out.println("参数列表");
    Class[] cl = cs.getParameterTypes();
    for(Class c3 : cl){
     System.out.println("/t"+c3.toString());
    }
   }
   
   System.out.println("解析父类信息-----------SuperClass-------------");
   Class superClass = c.getSuperclass();
   System.out.println("当前类的父类是:"+superClass.toString());
   
   Class[] interfaces = c.getInterfaces();
   System.out.print("当前类所实现的接口");
   for(Class c4 : interfaces){
    System.out.println(c4.toString()+"/t");
   }
   Package pack = c.getPackage();
   System.out.println("当前类所在包的是:"+pack.toString());
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
}

原创粉丝点击