使用aspectj捕获boolean Object.equals(Object)

时间:2013-04-18 19:58:22

标签: aspectj

有没有办法用AspectJ捕获Object.equals(Object)? 我试过了:

@Pointcut("execution (* *(..))")

@Pointcut("call (* *(..))")

但没有任何反应。

1 个答案:

答案 0 :(得分:2)

第一个只有在你可以将建议编入你的JRE / JDK类时才有效。虽然JDK编织是可能的(我之前已经完成了),但这并非易事,超出了本答案的范围。我假设你是一名AspectJ初学者,所以如果我是你,我不会这样做。

如果对Object.equals的调用是由您控制的代码明确地进行的,即通过您编写方面的代码,则第二个有效。如果调用是由JDK类进行的,那么您将返回选项1,即JDK编织。如果通过您自己的代码拨打电话,您就可以了。如果它们是由第三方库制作的,您仍然可以使用二进制编织,创建第三方类文件的新版本并为它们创建替换JAR。作为替代方案,您可以使用LTW(加载时编织)并在类加载期间编织它们。