Есть ли способ поймать Object.equals (Object) с AspectJ? I судимое:catch boolean Object.equals (Object) with aspectj
@Pointcut("execution (* *(..))")
или
@Pointcut("call (* *(..))")
, но ничего не происходит.
Есть ли способ поймать Object.equals (Object) с AspectJ? I судимое:catch boolean Object.equals (Object) with aspectj
@Pointcut("execution (* *(..))")
или
@Pointcut("call (* *(..))")
, но ничего не происходит.
Первый из них будет работать только в том случае, если вы сможете перетащить совет в классы JRE/JDK. В то время как JDK-переплетение возможно (я делал это раньше), это нетривиально и выходит за рамки этого ответа. Я предполагаю, что вы новичок AspectJ, поэтому я бы не пошел так, если бы был вами.
Второй работает, если вызов Object.equals
сделан явно из кода, управляемого вами, то есть кодом, в который вы вставляете свой аспект. Если вызовы выполняются классами JDK, вы вернетесь к опции 1, JDK. Если вызовы сделаны вашим собственным кодом, вы в порядке. Если они создаются сторонними библиотеками, вы все равно можете использовать двоичное плетение, создавая новые версии файлов сторонних классов и создавая для них заменяющие JAR-файлы. В качестве альтернативы вы можете использовать LTW (ткачество во время загрузки) и сплести их во время загрузки класса.