动态代理只知道cglib和jdk代理就可以?说明还不够卷。 1.背景 伴生对象(无同名类时,则为单例对象)用于实现Java静态方***为其生成两个class文件,文件名带$后缀的是真正的实现,包含实例方法,不带的是代理类,包含同名静态方法。 需求:将伴生对象的代理类的方法参数名写入字节码中。 相关代码在Scala语言编译器模块(compiler),backend包中的BCodeHelpers.scala文件。这里的asm是Scala的,而不是原来的asm,原理相同。 首先需要了解asm基本的操作,asm分为事件API和Tree API,前者使用访问者模式将数据结构和操作分离,这里我们使用访问者...