2013-04-18 3 views

ответ

2

Первый из них будет работать только в том случае, если вы сможете перетащить совет в классы JRE/JDK. В то время как JDK-переплетение возможно (я делал это раньше), это нетривиально и выходит за рамки этого ответа. Я предполагаю, что вы новичок AspectJ, поэтому я бы не пошел так, если бы был вами.

Второй работает, если вызов Object.equals сделан явно из кода, управляемого вами, то есть кодом, в который вы вставляете свой аспект. Если вызовы выполняются классами JDK, вы вернетесь к опции 1, JDK. Если вызовы сделаны вашим собственным кодом, вы в порядке. Если они создаются сторонними библиотеками, вы все равно можете использовать двоичное плетение, создавая новые версии файлов сторонних классов и создавая для них заменяющие JAR-файлы. В качестве альтернативы вы можете использовать LTW (ткачество во время загрузки) и сплести их во время загрузки класса.