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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 wata 于 2015-1-17 00:07 编辑
  1. /**
  2.          * 需求:
  3.          * 用用Method字节码执行String str = "abc"; str.CharAt(1);
  4.          *
  5.          * 步骤:
  6.          * 1,获取String类charAt(int index)方法的Method字节码
  7.          * 2,用Method字节码执行Str.CharAt(1);
  8.          * 3,打印结果
  9.          */
  10.         public static void reflectMethod() throws Exception{
  11.                 String str = new String("abc");
  12.                
  13.                 //获取String类charAt(int index)方法的Method字节码
  14.                 Method methodCharAt = String.class.getMethod("CharAt", int.class);
  15.                
  16.                 //用Method字节码执行Str.CharAt(1),并打印结果
  17.                 System.out.println(methodCharAt.invoke(str, 1));
  18.                         /*
  19.                          * Object invoke(Object obj, Object... args) :
  20.                          *                 对指定对象调用由此 Method 对象表示的方法。
  21.                          *
  22.                          * obj - 从中调用底层方法的对象
  23.                          * args - 用于方法调用的参数  
  24.                          */
  25.         }
复制代码


报的异常是:java.lang.NoSuchMethodException: java.lang.String.CharAt(int)

我哪里写错了?求解决!!!
--------------------------------------

汗。。。我解决了

我把CharAt中的c大写了,应该是:Method methodCharAt = String.class.getMethod("charAt", int.class);


==!




评分

参与人数 1技术分 +3 收起 理由
lwj123 + 3

查看全部评分

3 个回复

倒序浏览
bing构  哈哈  好像都是第二个字母开始大写
第一个都是小写的 比如 indexOf 之类的
回复 使用道具 举报
毕老师说的基本命名规则可以解决这一问题,我以前也总写错。。。
回复 使用道具 举报
写程序时的最头痛的就是大小写和中英文切换问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马