Java动态代理:目标类和代理类的代理逻辑

原创 今天药忘吃喽~ 2024-12-07 10:15 76阅读 0赞

在Java中,动态代理主要通过java.lang.reflect包下的Proxy、InvocationHandler等接口实现。下面以一个简单的例子来说明目标类和代理类的代理逻辑。

  1. 定义目标类(比如我们有一个Calculator类)
  1. public class Calculator {
  2. public int add(int a, int b) {
  3. return a + b;
  4. }
  5. }
  1. 创建代理类,这里我们通过实现InvocationHandler接口来创建代理:
  1. import java.lang.reflect.InvocationHandler;
  2. import java.lang.reflect.Method;
  3. public class ProxyCalculator implements InvocationHandler {
  4. private Calculator calculator;
  5. public ProxyCalculator(Calculator calculator) {
  6. this.calculator = calculator;
  7. }
  8. @Override
  9. public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  10. String methodName = method.getName();
  11. if ("add".equals(methodName)) {
  12. int a = (int) args[0];
  13. int b = (int) args[1];
  14. return calculator.add(a, b);
  15. } else {
  16. throw new IllegalAccessException("Method not allowed: " + methodName);
  17. }
  18. }
  19. }
  1. 使用代理类,我们创建一个ProxyCalculator的实例,并用这个代理对象调用目标方法:
  1. public class Main {
  2. public static void main(String[] args) throws Throwable {
  3. Calculator calculator = new Calculator();
  4. ProxyCalculator proxyCalculator = new ProxyCalculator(calculator);
  5. // 通过代理调用目标方法
  6. System.out.println(proxyCalculator.add(1, 2)); // 输出: 3
  7. }
  8. }

以上就是Java动态代理中,目标类和代理类的代理逻辑的基本示例。

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

发表评论

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

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

相关阅读