反射

来源:互联网 发布:java disruptor 教程 编辑:程序博客网 时间:2024/06/05 04:22

// 加载这个类的class文件
Class c = Class.forName(“com.sxtt.User”);
// 创建一个实例化的对象
User u = (User) c.newInstance();
// 类的全路径
System.out.println(c.getName());
// 类的名称
System.out.println(c.getSimpleName());
// 返回类的权限
System.out.println(Modifier.toString(c.getModifiers()));
// 判断是否是接口
System.out.println(c.isInterface());
// 拿到父类的全称
System.out.println(c.getSuperclass().getName());
// 父类的名字
System.out.println(c.getSuperclass().getSimpleName());
// 获取类中的public的属性
Field f = c.getField(“name”);
System.out.println(f.getName());
// 获取所有权限类型的属性
Field age = c.getDeclaredField(“age”);
System.out.println(age.getName());

    // 获取所有public的属性    Field[] fs = c.getFields();    // 获取所有类型的所有属性    Field[] dfs = c.getDeclaredFields();    System.out.println(dfs.length);    System.out            .println("======================================================");    // 获取所有公共方法包含父类和接口    Method[] ms = c.getMethods();    for (Method m : ms) {        System.out.println(m.getName());    }    System.out            .println("======================================================");    // 通过方法名获取公共方法    Method m = c.getMethod("say");    System.out.println(m.getName());    System.out            .println("======================================================");    // 获取所有本类的方法    Method[] bms = c.getDeclaredMethods();    for (Method bm : bms) {        System.out.println(bm.getName());    }    System.out            .println("======================================================");    // 通过名字获取本类的方法    Method bm = c.getDeclaredMethod("run");    System.out.println(bm.getName());    // 调用本类的带参数的方法    Method cm = c.getDeclaredMethod("run", String.class);    cm.invoke(u, "张三");}
原创粉丝点击