java - 为什么jdk动态代理在debug每一步模式时都会调用InvocableHandler.invoke "toString"方法

标签 java dynamic-proxy

当我使用jdk动态代理时,似乎

Object proxy = Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
                    new Class<?>[] { xx }, handler);

当我调试程序时,一步步跳过, 处理程序变体将使用“toString”方法调用其方法

@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    }
    if (method.getName().equals("toString")){
        System.out.println( " toString " +args);//**executed every step over line,why??**
        return method.invoke(target,args);
    }

但非 Debug模式时没有问题。

最佳答案

enter image description here

我猜 IDE 需要在红框中显示信息,这会导致调用对象的 toString() 方法。

关于java - 为什么jdk动态代理在debug每一步模式时都会调用InvocableHandler.invoke "toString"方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292536/

相关文章:

c# - 如何将 DynamicProxy "really"向下转换回其原始类型(通过 WCF 发送)

java - 为什么在 Java 的构造函数中传递 .class 名称

java - 如何最好地使用 Java 验证客户端与 elasticsearch 的连接?

c# - 使用 CaSTLe 动态代理进行异步拦截

java - 在运行时增强 java 对象

java - 代理模式与覆盖

java - Java SettableFuture 和 ListenableFuture 的 C# 等价物是什么?

java - 法语拼写检查 API

java - Sqlite 数据库未使用 java 更新

java - 如何使用 Spring 和 Java 创建动态代理