A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xinzhang 中级黑马   /  2016-4-11 10:29  /  271 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射指定类中的方法:
//获取类中所有的方法。
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);
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马