黑马程序员技术交流社区

标题: 反射机制 [打印本页]

作者: xinzhang    时间: 2016-4-11 10:29
标题: 反射机制
反射指定类中的方法:
//获取类中所有的方法。
public static void method_1() throws Exception {
  Class clazz = Class.forName("cn.itcast.bean.Person");
  Method[] methods = clazz.getMethods();//获取的是该类中的公有方法和父类中的公有方法。
  methods = clazz.getDeclaredMethods();//获取本类中的方法,包含私有方法。
  for(Method method : methods) {
   System.out.println(method);
  }
}
//获取指定方法;
public static void method_2() throws Exception {
  Class clazz = Class.forName("cn.itcast.bean.Person");
  //获取指定名称的方法。
  Method method = clazz.getMethod("show", int.class,String.class);
  //想要运行指定方法,当然是方法对象最清楚,为了让方法运行,调用方法对象的invoke方法即可,但是方法运行必须要明确所属的对象和具体的实际参数。
  Object obj = clazz.newInstance();
  method.invoke(obj, 39,"hehehe");//执行一个方法
}
//想要运行私有方法。
public static void method_3() throws Exception {
  Class clazz = Class.forName("cn.itcast.bean.Person");
  //想要获取私有方法。必须用getDeclearMethod();
  Method method = clazz.getDeclaredMethod("method", null);
  // 私有方法不能直接访问,因为权限不够。非要访问,可以通过暴力的方式。
  method.setAccessible(true);//一般很少用,因为私有就是隐藏起来,所以尽量不要访问。
}
//反射静态方法。
public static void method_4() throws Exception {
  Class clazz = Class.forName("cn.itcast.bean.Person");
  Method method = clazz.getMethod("function",null);
  method.invoke(null,null);
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2