[英]how to record/monitor java field assignment operation
如何记录/监视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 ...
}
}
NOTE:
我想在每个提交的任务行之前或之后进行检测; 因此无法手动指出哪条线应该是乐器
有可能使用JAVA DEBUG INTERFACE吗? 或有什么方法可以达到它?仪器或动态代理
您可以使用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();
}
}
});
我认为AOP是您所需要的。 阅读此http://www.javacodegeeks.com/2012/06/simple-introduction-to-aop.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.