Java动态代理

发表于:2010-4-02 10:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  4、测试类 Test

  Java代码

package Test1;
import java.lang.reflect.Proxy;
public class TestProxy {
  public static void main(String[] args) {
    Proxied proxied = new ConcreteProxied();
    proxied.doSomething();
    proxied.doSomethingElse("only a String");
    // 生成一个代理实例,这个代理实现了 Proxied 接口
    // 对这个代理(proxy)的方法的调用 会 重定向到 TimeingInvocationHandler 的 invoke 方法
    Proxied proxy = (Proxied) Proxy.newProxyInstance(Proxied.class
    .getClassLoader(), // 类加载器
    new Class[] { Proxied.class }, // 代理要实现的接口
    new TimeingInvocationHandler(proxied) // 调用处理器
    );
    proxy.doSomething();
    proxy.doSomethingElse("only a String");
  }
}

  运行Test类,输出如下:

  ConcreteProxied >> doSomething .
  ConcreteProxied >> doSomethingElse , argument = only a String.
  Test1.Proxied
  ConcreteProxied >> doSomething .
  TimeingInvocationHandler >> wastes time : 110ms
  Test1.Proxied
  ConcreteProxied >> doSomethingElse , argument = only a String.
  TimeingInvocationHandler >> wastes time : 156ms

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号