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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sponge 黑马帝   /  2011-12-16 21:43  /  2805 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Sponge 于 2011-12-17 10:38 编辑

有一个类
class StrDemo
{
        public void  testPara(String... args)
        {
                for(Object arg : args)
                {
                        System.out.println((String)arg);
                }
        }
}

如何用反射的方法得到这个方法呢。
即:
Method method = StrDemo.class.getMethod("testPara", ???);
问号的地方怎么填?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

7 个回复

倒序浏览
Method method = StrDemo.class.getMethod("testPara", Object.class);
回复 使用道具 举报
Method method = StrDemo.class.getMethod("testPara", String[].class);

用反射调用可变参数的函数就是传入一个对应类型数组作参数

评分

参与人数 1黑马币 +2 收起 理由
Sponge + 2 很给力!

查看全部评分

回复 使用道具 举报
楼上是错误的     可变参数可以 是多个参数  所以应该用数组  然后系统调用时会拆分数组    所以应该用数组的字节码

评分

参与人数 1黑马币 +1 收起 理由
Sponge + 1 很给力!

查看全部评分

回复 使用道具 举报
可变参数即参数的个数不确定, 所以应该用数组传递,后系统调用时会拆分数组    所以应该用数组的字节码

评分

参与人数 1黑马币 +1 收起 理由
Sponge + 1 赞一个!

查看全部评分

回复 使用道具 举报
Sponge 黑马帝 2011-12-17 10:33:45
地板
常文艺 发表于 2011-12-16 22:33
Method method = StrDemo.class.getMethod("testPara", Object.class);

是String[].class :P
回复 使用道具 举报
Sponge 黑马帝 2011-12-17 10:36:30
7#
马伟奇 发表于 2011-12-16 23:09
Method method = StrDemo.class.getMethod("testPara", String[].class);

用反射调用可变参数的函数就是传 ...

谢谢哦,试过了,可以,不过调用时,传入参数的时候也必须是一个参数,不能多个参数。也不能直接给String数组,而要(Object)new String[]{"2","3","4"}这样子。不知道有没有更好的方法。
回复 使用道具 举报
  Method method=  StrDemo.class.getMethod("testPara", new Class[]{String[].class});
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马