(Пытаясь сохранить простоту.)
У меня есть (частичный) рецепт ByteBuddy, подобный этому:
builder
.method(someMatcher())
.intercept(MethodDelegation.to(this.interceptor));
У меня есть класс "перехватчика", определенный следующим образом:
private static final class Interceptor {
private Interceptor() {
super();
}
@RuntimeType
private final Object doSomething(@This final Proxy<?> proxy,
@SuperCall final Callable<?> callable,
@Origin final String methodSignature) throws Exception {
final Object proxiedInstance = proxy.getProxiedInstance();
// TODO: logic
return callable.call(); // for now
}
}
(Метод перехватчика должен быть не-static
по разным причинам, здесь не важно.)
Когда я создаю экземпляр этого класса, определенного ByteBuddy, и вызываю простой public void blork()
метод на это, я получаю:
Cannot resolve ambiguous delegation of public void com.foo.TestExplorations$Frob.blork() to net.bytebuddy.implementation.bind.MethodDelegationBinder$MethodBinding$Builder$Build@3d101b05 or net.bytebuddy.implementation.bind.MethodDelegationBinder$MethodBinding$Builder$Build@1a9efd25
Как может быть двусмысленность, когда есть только один перехватчик? Что я сделал не так?