黑马程序员技术交流社区
标题:
【已解决】关于反射中Mehtod这个类里的invoke方法
[打印本页]
作者:
何拴绪
时间:
2012-6-13 21:09
标题:
【已解决】关于反射中Mehtod这个类里的invoke方法
本帖最后由 何拴绪 于 2012-6-13 23:11 编辑
张老师在使用的时候这个invoke方法里穿的参数是一个非静态对象类型,我在做的时候怎么提示要传递一个静态的对象,
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectDemo {
static String str1 = "reflect";
public String str2 = "reflectdemo";
String str3 = new String("hncu");
public static void main(String[] args) throws Exception {
//通过反射方式调用成员方法
Method m =String.class.getMethod("charAt", int.class);
System.out.println(m.invoke(str1, 1));//<font color="red">这里提示要传递一个静态的对象。。。传递str2和str3就提示有错。why???</font>
</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