我的用例如下:我有一个带有成员字段的类,几乎所有方法都可以访问它。我希望能够在每次访问时运行一些自定义代码修改成员字段,以便方法可以看到修改后的值。我最初的想法是使用自定义注释。
所以基本上我想要这样的东西:
Class myClass {
...
@MyAnnotation
MyFieldType myField;
...
public void myMethod()
{
...
Something smth = myField.getSomething();
...
}
}
这样当我运行方法myMethod()(或任何其他类方法)时,在修改myField之前会执行一些代码:
void MyAnnotationProcessor()
{
...
myField.change();
}
这样当我在myMethod中访问myField时,我看到更改的myField而不是方法调用之前的那个。基本上,在这方面,@ MyAnnotation应该像junit中的@Before。
我尝试将@MyAnnotation实现为自定义约束,但不幸的是,它没有按计划运行,当方法访问字段时,从未调用约束验证器。
有没有办法用注释做到这一点?或者我是在与已经失败的斗争作斗争?
非常感谢任何帮助。
更新
我以完全不同的方式解决了我的问题,无需拦截现场访问。非常感谢所有评论的人。