// 加载这个类的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, "张三");
}