gpt4 book ai didi

java - 如何记录/监控java字段赋值操作

转载 作者:行者123 更新时间:2023-12-01 13:54:43 25 4
gpt4 key购买 nike

如何记录/监控java字段赋值操作;例如,我想在赋值操作之前或之后添加一些函数;

原始代码:

class Test{
public String name;

public void operation{
.... some code ...
name="stackoverflow";
.... some code ...
}
}

更改代码后:

class Test{
public String name;
public void operation{
.... some code ...
[[ my instrument code ]]
name="stackoverflow";
[[ my instrument code ]]
.... some code ...
}
}

注意:我想在每个提交的作业行之前或之后进行检测;所以它不能手动指出哪一行应该是仪器

可以使用JAVA调试接口(interface)吗?或者有什么方法可以到达INStrument或动态代理

最佳答案

您可以使用 javassist 来做到这一点。适用于字段,但不适用于数组。我在快速序列化结构模拟中做了类似的事情:

method.instrument( new ExprEditor() {
@Override
public void edit(FieldAccess f) throws CannotCompileException {
try {
if ( ! f.isStatic() ) {
CtClass type = null;
type = f.getField().getType();
FSTClazzInfo.FSTFieldInfo fieldInfo = clInfo.getFieldInfo(f.getFieldName(), null);
if ( fieldInfo == null ) {
return;
}
if ( f.isReader() ) {
structGen.defineStructReadAccess(f, type, fieldInfo);
} else if ( f.isWriter() ) {
structGen.defineStructWriteAccess(f, type, fieldInfo);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});

来自 https://code.google.com/p/fast-serialization/source/browse/trunk/src/main/java/de/ruedigermoeller/heapoff/structs/unsafeimpl/FSTStructFactory.java

关于java - 如何记录/监控java字段赋值操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19676992/

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