本帖最后由 wata 于 2015-1-17 00:07 编辑
- /**
- * 需求:
- * 用用Method字节码执行String str = "abc"; str.CharAt(1);
- *
- * 步骤:
- * 1,获取String类charAt(int index)方法的Method字节码
- * 2,用Method字节码执行Str.CharAt(1);
- * 3,打印结果
- */
- public static void reflectMethod() throws Exception{
- String str = new String("abc");
-
- //获取String类charAt(int index)方法的Method字节码
- Method methodCharAt = String.class.getMethod("CharAt", int.class);
-
- //用Method字节码执行Str.CharAt(1),并打印结果
- System.out.println(methodCharAt.invoke(str, 1));
- /*
- * Object invoke(Object obj, Object... args) :
- * 对指定对象调用由此 Method 对象表示的方法。
- *
- * obj - 从中调用底层方法的对象
- * args - 用于方法调用的参数
- */
- }
复制代码
报的异常是:java.lang.NoSuchMethodException: java.lang.String.CharAt(int)
我哪里写错了?求解决!!!
--------------------------------------
汗。。。我解决了
我把CharAt中的c大写了,应该是:Method methodCharAt = String.class.getMethod("charAt", int.class);
==!
|