关于构造方法和before的执行顺序的问题
Author: myzhanCreated Mar 15, 2025Updated Mar 15, 2025
我举个例子
父类代码:
public class BaseRequest {
public String v1;
public BaseRequest(String v1) {
this.v1 = v1;
}
}子类代码:
public class Request extends BaseRequest {
public String v2;
public Request(String v1, String v2) {
super(v1);
this.v2 = v2;
}
@Override
public String toString() {
return v1+v2;
}
}我在尝试用jvm-sandbox拦截子类构造函数,代码如下:
new EventWatchBuilder(moduleEventWatcher)
.onClass("com.alibaba.interceptee.Request")
.onBehavior("<init>")
.withParameterTypes(String.class, String.class)
.onWatch(new AdviceListener() {
@Override
protected void before(Advice advice) throws Throwable {
advice.changeParameter(0, "hello");
advice.changeParameter(1, "world");
}
});发现并不能修改父类中v1的值,这是为什么呢?
Source: alibaba/jvm-sandbox