黑马程序员技术交流社区
标题:
动态代理的疑问
[打印本页]
作者:
清风有意
时间:
2014-4-16 23:49
标题:
动态代理的疑问
我想确认一下以下几个问题,望高手观摩是否正确!
1.动态代理类不可能用到目标类所有的方法,因为目标类本身有自己的特有方法。而动态代理类只能强转成接口的类型,所以有些目标类的方法不能调用到。
2.在动态代理类强转成某“一个”接口类型时,只能用到目标类这个接口中所有的方法,而不能用到其他接口中的方法。
3.动态代理类实现多个接口,只是为了能够进行强转动作。
package ClassTest;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
ArrayList al=new ArrayList();
InvocationHandlerInterface h=new InvocationHandlerInterface(al);
List str=(List)Proxy.newProxyInstance(al.getClass().getClassLoader(), al.getClass().getInterfaces(),h);
}
}
class InvocationHandlerInterface implements InvocationHandler{
private Object obj;
public InvocationHandlerInterface(Object obj) {
this.obj=obj;
}
public Object getProxy(){
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(),this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("jhaha");
return method.invoke(obj, args);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2