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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李健_8 中级黑马   /  2012-10-2 17:04  /  2272 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

张孝祥老师第二十二讲 讲到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

4 个回复

倒序浏览
张孝祥老师第二十二讲 讲到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

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
邱成 发表于 2012-10-2 23:26
public class ReflectTest {
public static void main(String[] args) throws Exception{
   String str1= ...

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

分析很好,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马