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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 何拴绪 于 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>         }
复制代码

4 个回复

倒序浏览
额额额,
你是在main函数里调用的,main函数是static静态的,里面用到的对象就必须是静态的啊,否则就报错。
还有张老师是没有在变量前面加static。但我查了一下,张老师是在main方法中定义变量的,由于函数main是静态的,所以里面定义的变量也应该是静态的。
回复 使用道具 举报
楼上的解答的很清楚,我也受教了,谢谢!
回复 使用道具 举报
刘鹏程 发表于 2012-6-13 21:28
额额额,
你是在main函数里调用的,main函数是static静态的,里面用到的对象就必须是静态的啊,否则就报错 ...

欧克 明白了。。。突然发现我的代码的问题了,谢谢!!
回复 使用道具 举报
额额额,,没事,,客气了,都在学习,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马