Java动态代理:增强类方法调用问题

原创 偏执的太偏执、 2024-10-13 19:09 137阅读 0赞

在Java中,动态代理主要用于实现对目标对象(被代理类)的任意方法增强。下面是一个关于增强类方法调用问题的例子:

  1. 首先创建一个被代理的类,比如Person
  1. public class Person {
  2. private String name;
  3. public Person(String name) {
  4. this.name = name;
  5. }
  6. // 原始方法
  7. public void sayHello() {
  8. System.out.println("Hello, " + name);
  9. }
  10. }
  1. 然后创建一个动态代理类,比如PersonProxy
  1. import java.lang.reflect.Method;
  2. public class PersonProxy implements InvocationHandler {
  3. private final Object target;
  4. public PersonProxy(Object target) {
  5. this.target = target;
  6. }
  7. @Override
  8. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  9. System.out.println("Before calling " + method.getName() + "...");
  10. // 原始方法调用
  11. Object result = method.invoke(target, args);
  12. System.out.println("After calling " + method.getName() + "...");
  13. return result;
  14. }
  15. }
  1. 最后使用动态代理来增强Person类的方法调用:
  1. public class Main {
  2. public static void main(String[] args) throws Throwable {
  3. // 创建被代理对象
  4. Person person = new Person("John Doe");
  5. // 创建动态代理
  6. Object proxy = new PersonProxy(person);
  7. // 执行增强后的方法调用
  8. proxy.sayHello();
  9. }
  10. }

在上述示例中,PersonProxy会先打印出”Before calling…”,然后执行原始的sayHello()方法,并打印出”After calling…”。这就是动态代理增强类方法调用的一个基本过程。

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

发表评论

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

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

相关阅读