// 获取字节码文件对象
Class c = Class.forName("cn.itcast_01.Person");
// 创建对象
Constructor con = c.getConstructor();
Object obj = con.newInstance();
// 获取方法
// Method[] methods = c.getMethods(); // 获取本类及其父类的所有公共方法
// Method[] methods = c.getDeclaredMethods(); // 获取本类的所有方法
// for (Method m : methods) {
// System.out.println(m);
// }
// 获取单独的方法
// 无返回值无参数
Method m = c.getMethod("show");
// obj.m();
//public Object invoke(Object obj,Object... args)
m.invoke(obj);
System.out.println("---------------------------");
//带参数无返回值
Method m2 = c.getMethod("print", String.class);
m2.invoke(obj,"hello");
System.out.println("---------------------------");
//带参数带返回值
Method m3 = c.getMethod("method", String.class,int.class);
Object o = m3.invoke(obj, "world",20);
System.out.println(o);
System.out.println("---------------------------");
//私有方法
Method m4 = c.getDeclaredMethod("function");
m4.setAccessible(true);
m4.invoke(obj);
1.获取当前方法的Method对象
1.得到class对象
1.类名.class
2.对象.getClass()
3.Class.forName(String className);
2.在Method类中有一个getAnnotation(String methodName...paramClass)
2.在Method类中有一个getAnnotation(Class annotationClass),可以获取一个注解对象
3.通过注解对象来调用其属性.