黑马程序员技术交流社区

标题: 看完代理,可以将函数的运行时间取出来吗?<已解决> [打印本页]

作者: 刘春发    时间: 2012-6-14 19:56
标题: 看完代理,可以将函数的运行时间取出来吗?<已解决>
本帖最后由 刘春发 于 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;
     }
    });
作者: 龚龙    时间: 2012-6-14 21:47
本帖最后由 龚龙 于 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);
}


}




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