虽然ByteBuddy有一个非常好的API,但我想知道它是否适合我的用例,或者我是否应该更好地坚持低级ASM。
我需要的是某种ElementMatcher
,如果方法包含某个可配置的字节代码(例如PUTSTATIC
),它将返回一个匹配项。对于所有匹配方法,我想在方法的开头编织其他代码。
作为一种解决方法,我当然可以使用ASM预先扫描字节码,构建一些元数据,然后根据分析结果使用ByteBuddy编织其他代码(我正在使用ASM做的事情)现在也是)。
虽然看起来不太好看。有没有更短的方法来做这样的事情?
答案 0 :(得分:1)
Byte Buddy使用TypeDescription
和MethodDescription
进行操作,可以表示已加载的Class
或Method
,也可以表示已解析的类文件。因此,Byte Buddy无法知道方法包含哪些字节代码。
对于字节码级操作,我通常建议使用由AsmVisitorWrapper
API为此目的由Byte Buddy公开的ASM。