Java ByteBuddy拦截对方法字节码内特定类实例的调用

Java ByteBuddy拦截对方法字节码内特定类实例的调用,java,byte-buddy,Java,Byte Buddy,我有一个带方法m()的类a和一个带方法n()的类B。 在A中,我有一个类型为b的字段b。 在m()中,在某个点上有对b.n()的调用。 我需要用ByteBuddy更改A的代码,以便在b.n()调用前后执行一些操作。 我需要一些建议/提示/提示来解决这个问题 提前感谢, Radu您只能通过使用底层ASM API编写自定义字节代码,在字节内完成此操作。Byte Buddy不提供任何高级构造来更改方法中的任何代码 通过注册AsmVisitorWrapper来公开API 或者,您可以创建B.n()的子类

我有一个带方法m()的类a和一个带方法n()的类B。 在A中,我有一个类型为b的字段b。 在m()中,在某个点上有对b.n()的调用。 我需要用ByteBuddy更改A的代码,以便在b.n()调用前后执行一些操作。 我需要一些建议/提示/提示来解决这个问题

提前感谢,


Radu

您只能通过使用底层ASM API编写自定义字节代码,在字节内完成此操作。Byte Buddy不提供任何高级构造来更改方法中的任何代码

通过注册AsmVisitorWrapper来公开API


或者,您可以创建B.n()的子类,在其中添加此拦截逻辑并将其设置为a的字段。但是,这将影响通过a进行的所有调用。

您只能通过使用底层ASM API编写自定义字节代码在字节内完成此操作。Byte Buddy不提供任何高级构造来更改方法中的任何代码

通过注册AsmVisitorWrapper来公开API


或者,您可以创建B.n()的子类,在其中添加此拦截逻辑并将其设置为a的字段。但是,这将影响通过a进行的所有调用。

谢谢!我要用包装纸挖。ASMAPI令人印象深刻,我需要保持良好的状态才能攻击它,但这就是生活。:)我还没有找到一种方法来按顺序访问语句,将它们存储在一个地方,然后将它们放回方法(在修改它们之后)。也许有稍微不同的处理方法。再次感谢你友好的回答,拉德桑克斯!我要用包装纸挖。ASMAPI令人印象深刻,我需要保持良好的状态才能攻击它,但这就是生活。:)我还没有找到一种方法来按顺序访问语句,将它们存储在一个地方,然后将它们放回方法(在修改它们之后)。也许有稍微不同的处理方法。再次感谢你友好的回答,拉杜