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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 成杰 黑马帝   /  2011-10-10 22:39  /  3730 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 成杰 于 2011-10-10 22:40 编辑

String str = "abc";
Method methodCharAt = String.class.getMethod("charAt", int.class);
System.out.println(methodCharAt.invoke(str1, 1));
打印出来的结果是b。
如果我想依次打印出 a 、b、c ,
可以用可变参数  methodCharAt.invoke(str1, Object... args);
该怎么实现?

评分

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

查看全部评分

2 个回复

倒序浏览
刚才我测试了一下,也问了同学,虽然api里面关于invoke是这样写invoke(Object obj, Object... args),但是这个地方这样设计他的意思是说参数列表数量不定具体根据你的被代理对象而定,所以要实现可变参数有两个办法,一个是重写一个方法类,在这里实现可变参数,还有一个是覆写invoke()的构造函数,但是两个方法好像都有点得不偿失,呵呵,小弟不才只能想到这里,如果说了笑话请大家见谅,呵呵,
回复 使用道具 举报
Sponge 黑马帝 2011-12-16 21:25:26
藤椅
要String里面有这种传入多个参数的方法才可以调用的。
而String里面charAt的方法只有你写的这一个,所以不可以。
只能多次打印
System.out.println(methodCharAt.invoke(str1, 0)+","+methodCharAt.invoke(str1, 1)+","+methodCharAt.invoke(str1, 2));
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马