【发布时间】:2012-12-19 19:27:02
【问题描述】:
对于我使用 aspectJ 和 invokedynamic 的工作,当切入点与调用的方法匹配时,我需要将通知编织到方法中。 首先,我将脚本中的 invokedynamic-instruction 的引导方法与我自己的进行了交换。现在在我的引导方法中,我想返回一个 CallSite,它首先调用被调用的方法,然后是我定义的建议。
问题是我必须返回一个由 ONE MethodHandle 构建的 CallSite ,它与原始引导方法中使用的类型签名相同。 我考虑过将两个方法句柄(原始 + 建议)组合成一个新的方法句柄,并将其用于返回的 CallSite。但我找不到正确的方法来做到这一点。 MethodHandles.foldArguments 似乎很有希望,但它对我不起作用。 另一个想法是从调用原始方法句柄和建议的包装方法构建 MethodHandle,但问题是正确的类型签名。
对我有什么想法或建议吗?如何使用建议修补 MethodHandle?
谢谢。
【问题讨论】:
-
你有没有试过的代码?
-
是的,当然。但是在这里提供它太多交联了,我的问题更多是概念性的。将两个方法句柄组合成一个新方法句柄的方法看起来如何?
标签: java aspectj java-7 invokedynamic methodhandle