您的位置:首页 > 编程语言 > Java开发

JAVA 反射机制,invoke调用用法一个小的用法

2013-08-21 17:27 253 查看
JAVA反射机制基础:

参考:http://lavasoft.blog.51cto.com/62575/43218/
http://java.ccidnet.com/art/3539/20070924/1222147_1.html
JAVA invoke的调用:

有如下的类

public class ClassA{
private int Method1(String[] strs){
int num=0;
for(String str:strs)
num++;
return num;
}
}

现在我们需要测试这个类中的Method1方法,按照java的反射机制我们可以用如下代码运行这个私有方法:

Class ownerClass=ClassA.class;
Method method= ownerClass.getDeclaredMethod("Method1");
method.setAccessible(true);
String[] strs= new String[]{"ssss","bbbb"};
ClassA ClassAinstance= new ClassA();
method.invoke(ClassAInstance,strs);
会产生参数数目不匹配的异常,原因是invoke函数的动态参数匹配,会讲strs映射到每一个参数上,而不是一个数组变量,解决方案:

Class ownerClass=ClassA.class;
Method method= ownerClass.getDeclaredMethod("Method1");
method.setAccessible(true);
String[] strs= new String[]{"ssss","bbbb"};
Object[] args=new Object[1];
args[0]=strs;
ClassA ClassAinstance= new ClassA();
method.invoke(ClassAInstance,args);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: