问题是您通过以下方式委托给拦截器的静态方法
MethodDelegation.to(Interceptor.class)
而拦截器类只声明了非静态成员。您可以将拦截器方法声明为
static
或者委托给实例而不是类。我认为前一种方法更合适。
然而,单靠这一点仍然行不通。您正在返回
Object
在拦截的同时,从拦截器键入
any()
方法这包括您的
TestObject
接口,以及由
对象
,隐式超类。您可以如下定义拦截器以使类编译,但Byte Buddy会将返回类型强制转换为每个方法的返回类型,这将导致
ClassCastException
:
public class Interceptor {
@RuntimeType
public static Object intercept(@Origin String method, @AllArguments Object[] args) {
System.out.println("I have intercepted a call");
return "Hello";
}
}