理解Java的动态代理机制示例

原创 布满荆棘的人生 2024-11-26 10:09 111阅读 0赞

Java的动态代理主要通过Proxy类和InvocationHandler接口来实现。下面是一个简单的示例:

  1. 创建接口(需要定义方法)
  1. public interface MyInterface {
  2. void myMethod();
  3. }
  1. 创建一个实现了接口且作为代理的对象
  1. // 实现MyInterface接口
  2. class MyImplementation implements MyInterface {
  3. @Override
  4. public void myMethod() {
  5. System.out.println("Method called in proxy");
  6. }
  7. }
  8. // 作为动态代理的实现类
  9. class MyInvocationHandler implements InvocationHandler {
  10. private MyImplementation implementation;
  11. public MyInvocationHandler(MyImplementation implementation) {
  12. this.implementation = implementation;
  13. }
  14. @Override
  15. public Object invoke(Object obj, Method method, Object[] args) {
  16. System.out.println("Before proxy call");
  17. // 调用方法,注意这里已经改变了obj的实际引用
  18. Object result = method.invoke(implementation, args);
  19. System.out.println("After proxy call");
  20. return result;
  21. }
  22. }
  1. 使用代理对象
  1. // 创建动态代理对象和处理者
  2. MyImplementation implementation = new MyImplementation();
  3. MyInvocationHandler handler = new MyInvocationHandler(implementation);
  4. // 创建Proxy对象并使用它
  5. Object proxyObj = Proxy.newProxyInstance(
  6. ClassLoader.getSystemClassLoader(),
  7. new Class[]{MyInterface.class}, // 需要代理的接口列表
  8. handler // 处理器,即动态代理的核心部分
  9. );

现在,通过这个动态代理,你可以调用真实对象的方法,同时在方法调用前后进行额外的操作。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,111人围观)

还没有评论,来说两句吧...

相关阅读