这是隐藏setter / getter对后面变量的很多原因之一。然后在设置器中,您可以通知您的监听器,该变量已经以适当的方式进行了修改。正如其他人评论的那样,没有内在的方式来做你想要的,你需要自己实现。
或者本杰明提出了一个有趣的模式,称为装饰模式,如果有问题的代码无法修改,这可能对您有用。 You can look up more info at wikipedia
这个想法是在对象周围构建一个兼容的包装器。让我们说你的对象是MyClass类型。
class MyClass{
publc void doFunc(){...}
}
class MyLoggedClass extends MyClass{
MyClass myObject;
publc void doFunc(){
//Log doFunc Call
myObject.doFunc();
}
}
代替
MyClass object = new MyClass();
你会用
MyClass object = new MyLoggedClass(new MyClass());
现在,您的其余代码将按照正常使用对象,除了每个函数调用将被记录或通知等。
正如你将在维基百科中看到的那样,这通常是通过一个接口来完成的,该接口是从相关类继承的,但这可能是不可能的。