method.invoke("run", new String[]{"zs","ls","ww"}); //这个报错,为什么?
1、参数都传错了,其实method就代表了Person 类身上的run方法,即然method它都代表了run,还传还把run传传进你觉得可以?
虽然method属于的是Person类身上的run法,并没有指向Person类的某个对象身上的run方法;所以要执行某个对象身上的run方法,那就把某个对象作为参数传进去。
2,new String[]{"zs","ls","ww"}); 被执拆分成三个参数了
这是JDK1.5的新特性为了兼容jdk1.4的新特性:自动装拆箱功能。
//相于告诉编译器,哥们我给你传的是Object类型数据你就别拆
//否则先把你拆了再进行编译,所以就会出现not match
method.invoke(p, (Object)(new String[]{"zs","ls","ww"}));
|