ByteBuddy ElementMatcher基于方法字节码

时间:2017-01-24 13:33:57

标签: java byte-buddy

虽然ByteBuddy有一个非常好的API,但我想知道它是否适合我的用例,或者我是否应该更好地坚持低级ASM。

我需要的是某种ElementMatcher,如果方法包含某个可配置的字节代码(例如PUTSTATIC),它将返回一个匹配项。对于所有匹配方法,我想在方法的开头编织其他代码。

作为一种解决方法,我当然可以使用ASM预先扫描字节码,构建一些元数据,然后根据分析结果使用ByteBuddy编织其他代码(我正在使用ASM做的事情)现在也是)。

虽然看起来不太好看。有没有更短的方法来做这样的事情?

1 个答案:

答案 0 :(得分:1)

Byte Buddy使用TypeDescriptionMethodDescription进行操作,可以表示已加载的ClassMethod,也可以表示已解析的类文件。因此,Byte Buddy无法知道方法包含哪些字节代码。

对于字节码级操作,我通常建议使用由AsmVisitorWrapper API为此目的由Byte Buddy公开的ASM。