Я использую AspectJ для захвата вызовов методов. Затем мне нужно получить имя метода и значения параметров.
Давайте рассмотрим следующий пример:
Line2D line = new Line2D.Double(lineStart, lineEnd);
and graphics.draw(line);
Мне нужно перехватить все звонки на Graphics2D.draw(Shape)
. У меня есть pointcut, который делает это:
pointcut captureCallParameters(Shape name) : call(* *(Shape)) && args(name);
Проблема в том, что я пытаюсь получить значение параметра (Shape в этом методе). Я получаю этот параметр: java.awt.geom.Line2D$Double@596e1fb1
Instad Я хочу получить точки для фигуры, которая в этом случае является линией.
С другой стороны, у меня также есть pointcut, который соответствует конструкции новой линии, упомянутой выше, и я могу получить параметры этой линии. НО я не знаю, как связать метод Draw с этим конструктором линии. У меня может быть несколько конструкторов для Line
s, и я не знаю, какой из этих Line
s нарисован методом Draw(line)
.