对于我使用 aspectJ 和 invokedynamic 的工作,当切入点与被调用的方法匹配时,我需要将通知编织到方法中。首先,我将脚本中的 invokedynamic-instruction 的引导方法与我自己的进行了交换。现在在我的引导方法中,我想返回一个 CallSite,它首先调用被调用的方法,然后是我定义的建议。
问题是我必须返回一个由 ONE MethodHandle 构建的 CallSite ,其类型签名与原始引导方法中使用的类型签名相同。我考虑过将两个方法句柄(原始 + 建议)组合成一个新的方法句柄,并将其用于返回的 CallSite。但我找不到正确的方法来做到这一点。MethodHandles.foldArguments 似乎很有希望,但它对我不起作用。另一个想法是从调用原始方法句柄和建议的包装方法构建 MethodHandle,但问题是正确的类型签名。
有没有人对我有想法或建议?如何使用建议修补 MethodHandle?
谢谢你。