gpt4 book ai didi

Javassist仪器

转载 作者:行者123 更新时间:2023-12-01 09:18:16 26 4
gpt4 key购买 nike

我是 Java 和 Javassist 新手。我想在某些方法中对我的原始变量之一进行每次读取访问之前添加一个记录器。经过一番研究,我想出了这段代码:

try {
method.instrument(
new ExprEditor() {
public void edit(FieldAccess fa) throws CannotCompileException {
CtField field = null;
CtClass fieldType = null;
try {
field = fa.getField();
fieldType = field.getType();
} catch (NotFoundException e) {
e.printStackTrace();
}
if (fa.isReader() && field != null && fieldType.isPrimitive()){
System.out.println("Primitive found: " + field.getName());

//ToDo: call method before variable access
fa.replace("{ $_ = $proceed($$); }");
}
}
}
);
} catch (CannotCompileException e) {
e.printStackTrace();
}

有没有办法在访问变量之前调用(记录器)方法,或者我是否必须以不同的方式解决这个问题?使用 Javassist 实现此目的的最佳方法是什么?

希望有人能帮助我:)

最佳答案

您可以使用普通的记录器对象来调用记录器方法。但请确保在 list 文件中给出 jar 类路径。

关于Javassist仪器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40361475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com