黑马程序员技术交流社区

标题: 动态代理的疑问 [打印本页]

作者: 清风有意    时间: 2014-4-16 23:49
标题: 动态代理的疑问
我想确认一下以下几个问题,望高手观摩是否正确!
1.动态代理类不可能用到目标类所有的方法,因为目标类本身有自己的特有方法。而动态代理类只能强转成接口的类型,所以有些目标类的方法不能调用到。
2.在动态代理类强转成某“一个”接口类型时,只能用到目标类这个接口中所有的方法,而不能用到其他接口中的方法。
3.动态代理类实现多个接口,只是为了能够进行强转动作。


  1. package ClassTest;

  2. import java.lang.reflect.InvocationHandler;
  3. import java.lang.reflect.Method;
  4. import java.lang.reflect.Proxy;
  5. import java.util.ArrayList;
  6. import java.util.List;


  7. public class Test2 {

  8.         public static void main(String[] args) {
  9.                 ArrayList al=new ArrayList();
  10.                 InvocationHandlerInterface h=new InvocationHandlerInterface(al);
  11.                 List str=(List)Proxy.newProxyInstance(al.getClass().getClassLoader(), al.getClass().getInterfaces(),h);
  12.                
  13.                
  14.         }

  15. }
  16. class InvocationHandlerInterface implements InvocationHandler{
  17.         private Object obj;
  18.         public InvocationHandlerInterface(Object obj) {
  19.                 this.obj=obj;
  20.         }
  21.         public Object getProxy(){
  22.                 return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(),this);
  23.         }
  24.         @Override
  25.         public Object invoke(Object proxy, Method method, Object[] args)
  26.                         throws Throwable {
  27.                 System.out.println("jhaha");
  28.                 return method.invoke(obj, args);
  29.         }
  30.        
  31. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2