黑马程序员技术交流社区

标题: 【已解决】关于反射中Mehtod这个类里的invoke方法 [打印本页]

作者: 何拴绪    时间: 2012-6-13 21:09
标题: 【已解决】关于反射中Mehtod这个类里的invoke方法
本帖最后由 何拴绪 于 2012-6-13 23:11 编辑

张老师在使用的时候这个invoke方法里穿的参数是一个非静态对象类型,我在做的时候怎么提示要传递一个静态的对象,
  1. import java.lang.reflect.Field;
  2. import java.lang.reflect.Method;

  3. public class ReflectDemo {

  4.          static String str1 = "reflect";
  5.          public String str2 = "reflectdemo";
  6.          String str3 = new String("hncu");
  7.          
  8.         public static void main(String[] args) throws Exception {
  9.                 //通过反射方式调用成员方法
  10.                 Method m =String.class.getMethod("charAt", int.class);
  11.                 System.out.println(m.invoke(str1, 1));//<font color="red">这里提示要传递一个静态的对象。。。传递str2和str3就提示有错。why???</font>
  12. </font>         }
复制代码

作者: 刘鹏程    时间: 2012-6-13 21:28
额额额,
你是在main函数里调用的,main函数是static静态的,里面用到的对象就必须是静态的啊,否则就报错。
还有张老师是没有在变量前面加static。但我查了一下,张老师是在main方法中定义变量的,由于函数main是静态的,所以里面定义的变量也应该是静态的。
作者: 李盼    时间: 2012-6-13 21:45
楼上的解答的很清楚,我也受教了,谢谢!
作者: 何拴绪    时间: 2012-6-13 22:01
刘鹏程 发表于 2012-6-13 21:28
额额额,
你是在main函数里调用的,main函数是static静态的,里面用到的对象就必须是静态的啊,否则就报错 ...

欧克 明白了。。。突然发现我的代码的问题了,谢谢!!
作者: 刘鹏程    时间: 2012-6-13 22:06
额额额,,没事,,客气了,都在学习,




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