1
ByteBuddyAgent
을 사용하여 런타임시 기본 메소드에 주석을 추가하려고합니다. 기본 구현을 유지하기 위해 리베이스 전략을 사용하고 있지만 원래 메소드를 호출하여 새 메소드를 인터셉트하는 방법을 알 수는 없습니다.ByteBuddy를 사용하여 인터페이스 기본 메소드를 리베이스하는 방법은 무엇입니까?
나는 MethodCall.invokeSuper()
과 MethodCall.invokeSelf().onDefault()
을 사용해 보았지만 두 가지 모두 나와 IllegalStateException
을 사용했습니다.
new ByteBuddy()
.subclass(MyInterface.class)
.method(isDeclaredBy(typeDescription).and(isDefaultMethod()))
.intercept(MethodCall.invokeSelf().onDefault())
.annotateMethod(AnnotationDescription.Builder
.ofType(MyAnnotation.class).build())
.make()
...