今天想试试cglib的代理方法,方法是带有参数的
idea中报了这个错误:
Exception in thread "main" java.lang.IllegalArgumentException: Constructor not found
//生成代理类,target是代理目标
public <T>T createProxy(T target,Class[] args,Object[] argsValue){
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(target.getClass());
enhancer.setCallback(this);
return (T) enhancer.create(args,argsValue);
}
@Override
public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy){
Object result=null;
System.out.println(method.getName());
try {
result =methodProxy.invokeSuper(o,objects);
}catch (Exception e){
System.out.println("error:"+method.getName()+"..");
} catch (Throwable throwable) {
throwable.printStackTrace();
}
return result;
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
<p>在当前类内调用本类会报错,在外部调用别的类就不报错。</p>
<pre><code>methodProxy.invoke(o,objects);</code></pre>
<p>报错是你传入的target对象找不到对应参数的构造方法,createProxy方法你是怎么调用的?target的class你又是怎么定义的?认真检查一下,如果找不到就把代码贴出来</p>