黑马程序员技术交流社区
标题:
还是反射,JAVA加强23课的一点问题
[打印本页]
作者:
罗杰
时间:
2012-3-29 09:41
标题:
还是反射,JAVA加强23课的一点问题
反射一个接收数组参数的成员函数
Method mainMethod = Class.forName(startingClassName).getMethod("main",String[].class);
mainMethod.invoke(null,(Object)new String[]{"111","222"});
问题1:
invoke中将一个Object对象作为参数传入mainMethod,而mainMethod制定的参数类型是String[],为什么不会出错?
问题2:
如果想要反射一个可变参数的成员函数那getMethod()时指定的参数类型如何写呢?
作者:
马云
时间:
2012-3-29 09:57
收藏了,一会回来研究。
作者:
dangfei
时间:
2012-3-29 10:32
一,String[]在作为参数传递时,有可能被认为是传递了多个参数,前面加一个(Object)告诉编译器,传过来的就是一个参数。
在执行方法时候再把Object转换成String。
二,可变参数,终究还是数组,给个参考吧:
public static void main(String[] args) {
// TODO Auto-generated method stub
Test5 t5 = new Test5();
try {
Method m = t5.getClass().getMethod("tt", String.class,int[].class);
m.invoke(t5, "zhangsan",new int[]{1,2,3});
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void tt(String str,int ...ts){
int sum = 0;
for(int t : ts )
{
sum+=t;
}
System.out.println(str + "得分:"+sum);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2