问一个关于Java反射和动态代理的问题。动态代理生成的对象通过反射设置报告错误
比如定义了一个接口IHello:
界面IHello {
void PrintHello();
{}
以及一个用户类:
类别用户{
IHello ihello
公共用户(){}
public void setIHello(IHello hello){
this.ihello=hello
{}
public void sayHello(){
ihello。printHello();
{}
{}
在实际调用时,采用动态代理先生产IHello的实例,然后设置到用户对象中调用是可以的:
我你好你好=(我你好)新动态代理().绑定(新hello());
用户用户=新用户();
用户。setihello(hello);
用户。sayHello();
现在某些情况下,我要通过反射的方式设置用户中的成员变量,我是这么写的:
我你好你好=(我你好)新动态代理().绑定(新hello());
用户用户=新用户();
阶级?参数=新类[1];
parmeter[0]=hello。GetClass();
//获取方法时出错
方法setHello=user.getClass().getDeclaredMethod(‘setIHello ‘,parmeter);
setHello.invoke(user,hello);
在上面一句获取方法时出错了,报错内容为NoSuchMethodException,因为帕米特类型不对。
请教应该怎么改呢?
(上面那句改成getDeclaredMethod(‘setIHello ‘,IHello.class)肯定是可以的,问题是现在不希望指定类型,而希望帕米特是动态生成的(