黑马程序员技术交流社区

标题: Method类反射方法疑问 [打印本页]

作者: 李健_8    时间: 2012-10-2 17:04
标题: Method类反射方法疑问
张孝祥老师第二十二讲 讲到Method类反射方法调用时  有一处看了几遍都不是太懂 请高手指教
public class ReflectTest {
public static void main(String[] args) throws Exception{
  String str1="abc";
Method methodCharAt
     =String.class.getMethod("charAt",int.class);
  System.out.println(methodCharAt.invoke(str1,1));//b
     System.out.println(methodCharAt.invoke(str1,new  Object[]{2}));//
    }
}
上面申明是int字节码 为何下面却用的是数组  另外结果为何是c

作者: 武庆东    时间: 2012-10-2 17:23
张孝祥老师第二十二讲 讲到Method类反射方法调用时  有一处看了几遍都不是太懂 请高手指教
public class ReflectTest {
public static void main(String[] args) throws Exception{
  String str1="abc";
Method methodCharAt
     =String.class.getMethod("charAt",int.class); //得到charAt(int) 方法
  System.out.println(methodCharAt.invoke(str1,1));//调用对象str1.charAt(1)方法,得到第一个字符
     System.out.println(methodCharAt.invoke(str1,new  Object[]{2}));///*
invoke(Object obj, Object... args)
          对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。
    参数Object...args,这里Object类型的可变参数,可以用数组进行包装,调用时进行拆分
*/
    }
}
上面申明是int字节码 为何下面却用的是数组  另外结果为何是c

作者: 邱成    时间: 2012-10-2 23:26
public class ReflectTest {
public static void main(String[] args) throws Exception{
   String str1="abc";
Method methodCharAt
      =String.class.getMethod("charAt",int.class);
   System.out.println(methodCharAt.invoke(str1,1));//b
      System.out.println(methodCharAt.invoke(str1,new  Object[]{2}));
     /*
        invoke(Object obj, Object... args)
         对带有指定参数的指定对象调用由此 Method 对象表示的底层方法。Object... args这个是1,5的方法,1.4的用的就是数组
        因为1JDK.5兼容1.4的版本,对数组进行拆分,拆分之后参数也是int类型的,所以可以返回c
   */
     }
}



上面申明是int字节码 为何下面却用的是数组  另外结果为何是c
作者: 李健_8    时间: 2012-10-3 08:08
邱成 发表于 2012-10-2 23:26
public class ReflectTest {
public static void main(String[] args) throws Exception{
   String str1= ...

再请问一下 对数组进行拆分是什么意思 以Object[]{2}为例 如何进行拆分 还有一句不懂  拆分之后的参数也是int类型???
作者: 李玉生    时间: 2012-10-3 08:30
武庆东 发表于 2012-10-2 17:23
张孝祥老师第二十二讲 讲到Method类反射方法调用时  有一处看了几遍都不是太懂 请高手指教
public class Re ...

分析很好,赞一个




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