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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 刘春发 于 2012-6-14 22:25 编辑

Collection proxy3 = (Collection)Proxy.newProxyInstance(
    Collection.class.getClassLoader(),//定义代理类的类加载器
    new Class[]{Collection.class},//代理类要实现的接口列表
    new InvocationHandler(){//指派方法调用的调用处理程序
     ArrayList target = new ArrayList();
     public Object invoke(Object proxy, //调用方法的代理实例
       Method method,//对应于在代理实例上调用的接口方法的 Method 实例
       Object[] args//包含传入代理实例上方法调用的参数值的对象数组,如果接口方法不使用参数,则为 null
       ) throws Throwable {
      long beginTime = System.currentTimeMillis();
      Object retVal = method.invoke(target, args);
      long endTime = System.currentTimeMillis();
      System.out.println("runtime: " + (endTime - beginTime));//有没有办法将 (endTime - beginTime)的值取出来??
      return retVal;
     }
    });

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

1 个回复

倒序浏览
本帖最后由 龚龙 于 2012-6-14 21:48 编辑

可以啊,你在外面定义一个成员变量不就行了,如:
class a{
private long costTime;  //定义成员变量记住消耗时间
public static void main(String[] args){
Collection proxy3 = (Collection)Proxy.newProxyInstance(
......
  long beginTime = System.currentTimeMillis();
      Object retVal = method.invoke(target, args);
      long endTime = System.currentTimeMillis();
     costTime = endTime-beginTime;
return ......
)
syso(costTime);
}


}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马