이런 식으로 재정의 방법 m
을 수행하는 내장 된 방법이 있습니다. 그러나 Byte Buddy는 ASM API를 자발적으로 노출하여 Byte Buddy를 구현합니다. ASM은 이것을 수행하는 방법을 보여줄 수있는 매우 광범위한 문서를 제공합니다. 그러나 나는 그것이 꽤 많은 코드가 될 것이라고 말할 수 있습니다. 디버그 기호를 사용하여 모든 메소드를 컴파일해야합니다. 그렇지 않으면이 내부 변수를 런타임에 사용할 수 없습니다.
그래도이 작업을 수행 하시겠습니까? 정확한 유스 케이스를 모르면 나쁜 생각 인 것 같습니다. 이 솔루션을 구현하면 로컬 변수의 이름을 구현 세부 사항이 아닌 응용 프로그램의 일부로 만들 수 있습니다.
그러므로 나는 doSomething
방법을 사용하는 것이 좋습니다. 이 충분할의 yourn 쉽게 같은 인터셉터를 사용하여 바이트 버디에서 수행되는 것을겠습니까 다음
class Interceptor {
void intercept(@Origin Method method, @AllArguments Object[] args) {
int index = 0;
for(Parameter p : method.getParameters()) {
context.add(p.getName(), args[index++]);
}
}
}
다음과 같이 인터셉터 후 사용할 수 :
MethodDelegation.to(new Interceptor()).andThen(SuperMethodCall.INSTANCE);
음, ASM을 사용하여, 그것은 확실히 가능하지만, 이것은 당신이 듣고 싶은 것이 아닙니다 ... – fge
이 경우에 ASM 솔루션을 적용 할 수 있습니까? thx ... Green –