A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 清风有意 中级黑马   /  2014-4-16 23:49  /  562 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我想确认一下以下几个问题,望高手观摩是否正确!
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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
itpower + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马