I';我得到java.lang.IllegalArgumentException
我发现以下错误: java.lang.IllegalArgumentException:[static java.lang.String com.runtime.MyInterceptor.Interceptor()]都不允许从公共java.lang.String java.lang.Object.toString()进行委派 我不知道我犯了什么错误I';我得到java.lang.IllegalArgumentException,java,reflection,byte-buddy,Java,Reflection,Byte Buddy,我发现以下错误: java.lang.IllegalArgumentException:[static java.lang.String com.runtime.MyInterceptor.Interceptor()]都不允许从公共java.lang.String java.lang.Object.toString()进行委派 我不知道我犯了什么错误 public void interceptMethod() throws InstantiationException, IllegalAcces
public void interceptMethod() throws InstantiationException, IllegalAccessException {
Class<?> dynamicType = new ByteBuddy().subclass(Object.class)
.method(ElementMatchers.named("toString"))
.intercept(MethodDelegation
.to(MyInterceptor.class))
.make()
.load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
if (dynamicType.newInstance().toString().equals("intercept")) {
System.out.println("method intercept() is intercepted by byteBuddy");
} else {
System.out.println("Failed to intercept the method toString()");
}
}
class MyInterceptor {
static String intercept() {
return "intercept";
}
}
public void interceptMethod()抛出实例化异常,IllegalAccessException{
类dynamicType=newbyteBuddy().subclass(Object.Class)
.method(ElementMatchers.named(“toString”))
.拦截(方法)
.to(MyInterceptor.class))
.make()
.load(getClass().getClassLoader(),ClassLoadingStrategy.Default.WRAPPER)
.getLoaded();
if(dynamicType.newInstance().toString().equals(“intercept”)){
System.out.println(“方法拦截()被byteBuddy拦截”);
}否则{
System.out.println(“未能拦截方法toString()”;
}
}
类拦截器{
静态字符串截距(){
返回“截取”;
}
}
公开拦截器方法:
public class MyInterceptor {
public static String intercept() {
return "intercept";
}
}
但我仍然面临着同样的问题,这很奇怪,当我使用更改运行代码时,您的代码正在工作。MyInterceptor是嵌套类吗?也许试着把它公开,静态的,或者公开的,如果它是顶级的。嗨,高,我把我的拦截器做为公开的,它正在工作。非常感谢你:)你在linkedin吗?我在那里有一个帐户,尽管我很少登录。顺便说一句,如果您满意,请接受答案;>