如何记录/监视java字段分配操作
如何记录/监控java字段分配操作; 例如,我想在赋值操作之前或之后添加一些函数 原始代码:如何记录/监视java字段分配操作,java,dynamic-proxy,jdi,Java,Dynamic Proxy,Jdi,如何记录/监控java字段分配操作; 例如,我想在赋值操作之前或之后添加一些函数 原始代码: class Test{ public String name; public void operation{ .... some code ... name="stackoverflow"; .... some code ... } } 更改代码后: class Test{ public String name; pub
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吗 调试接口??或者有什么方法可以达到它的目的吗?工具或动态代理我认为AOP是您所需要的。读一下这个例子
您可以使用javassist实现这一点。适用于字段,但不适用于数组。我在fast serialization struct模拟中做过类似的事情:
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();
}
}
});
从