你只是实现了ArrayList类的所有接口的方法,但是ArrayList类还有它自己的方法,是接口中没有的,这样你生成的代理类并不是ArrayList的子类,所以不能转换成ArrayList.
如果想要生成一类的子类当代理,可以使用第三方的Cglib来实现
需要了解其中的一个类和一个接口就可最做了
MethodInterceptor 方法回调接口
Enhancer 生成代理对象的类
用法和proxy类似
Enhancer enhancer = new Enhancer(); // 实例化类
enhancer.setSuperclass(clazz);将要代理的类的字节码传入,就是父类
enhancer.setCallback(new MethodInterceptor(){} );//传入一个回调器实例,类似于InvocationHandler
enhancer.create();创建实例用Object接收,可以强转为父类型
|