К сожалению, локальные переменные не предоставляются через точки соединения.Это означает, что вы не можете написать pointcut, чтобы соответствовать им.Таким образом, ответ - нет, вы не можете сделать это напрямую.
Однако, если бы вы должны были реорганизовать свой код так, чтобы локальная переменная была создана внутри метода, вы могли бы получить к нему доступ.
Концептуально этот вид рефакторинга может быть лучше для вашего кода.Вместо того, чтобы просто выделять новую локальную переменную, вы можете четко указать, что делает выделение, инкапсулировав ее в метод с хорошо известным именем.
Например, это:
String localString = new String( "test" );
становитсяthis:
String localString = allocateTestString(); // or some better name
С помощью этого метода:
private String allocateTestString() {
return new String( "test" )
}
Затем вы можете написать pointcut для захвата локальной переменной следующим образом:
after() returning(String var) : call(private String allocateTestString()) {
// do something fun
}