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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖智 中级黑马   /  2012-12-8 22:40  /  1343 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廖智 于 2012-12-9 11:30 编辑

package cn.itcasst.p1;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.Collection;
public class ProxyTest2 {
/**
  * @param args
  * @throws Exception
  * @throws NoSuchMethodException
  */
public static void main(String[] args) throws NoSuchMethodException, Exception {
  // TODO Auto-generated method stub

  Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);
  //创建动态代理的实例。
  Collection proxy3 = (Collection)Proxy.newProxyInstance(
    Collection.class.getClassLoader(),
    new Class[]{Collection.class},
    new InvocationHandler(){
     ArrayList target = new ArrayList();
     @Override
     public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数分别代表那些,请详细说明?
      
      return method.invoke(target,args); //这里的method代表的是那个method对象?
     }
     
    }
    );
  proxy3.add("zxx");
  proxy3.add("lhm");
  proxy3.add("bxd");
  System.out.println(proxy3);
  System.out.println(proxy3.size());
  
}
}


动态代理看的有点晕,请高手帮忙下,红字部分是问题,谢谢了。

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
1.public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数分别代表那些,请详细说明?
这里的第一个参数是表明是哪个代理对象,
第二个参数是表明调用代理对象的哪个方法,
第三个参数代表调用这个方法时要传递什么参数
2return method.invoke(target,args); //这里的method代表的是那个method对象?
这里的method表明调用目标对象的这个方法
3.以上是个人理解,希望可以帮到楼主

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
刘菲 发表于 2012-12-8 23:13
1.public Object invoke(Object proxy, Method method,Object[] args) throws Throwable {//这里明确的参数 ...

恩,谢谢!开始还感觉很模糊,听你说了,大概知道是什么意思了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马