黑马程序员技术交流社区

标题: 反射中invoke函数的可变参数的问题 [打印本页]

作者: 成杰    时间: 2011-10-10 22:39
标题: 反射中invoke函数的可变参数的问题
本帖最后由 成杰 于 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);
该怎么实现?


作者: 庞金梁    时间: 2011-10-10 23:45
刚才我测试了一下,也问了同学,虽然api里面关于invoke是这样写invoke(Object obj, Object... args),但是这个地方这样设计他的意思是说参数列表数量不定具体根据你的被代理对象而定,所以要实现可变参数有两个办法,一个是重写一个方法类,在这里实现可变参数,还有一个是覆写invoke()的构造函数,但是两个方法好像都有点得不偿失,呵呵,小弟不才只能想到这里,如果说了笑话请大家见谅,呵呵,

作者: Sponge    时间: 2011-12-16 21:25
要String里面有这种传入多个参数的方法才可以调用的。
而String里面charAt的方法只有你写的这一个,所以不可以。
只能多次打印
System.out.println(methodCharAt.invoke(str1, 0)+","+methodCharAt.invoke(str1, 1)+","+methodCharAt.invoke(str1, 2));




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