假设我使用statement定义了一些变量int someVariable;。代码运行时,变量的值会更改。
int someVariable;
如何跟踪此变量的变化?我如何实现某些行为类似于onSomeVariableChangedListener的侦听器?
我还需要知道何时在一个页面中执行了其他方法,以便可以在另一个类中设置侦听器。
这是将变量隐藏在 setter / getter 对后面的众多原因之一。然后,在设置器中,您可以通知您的侦听器此变量已通过适当的方式进行了修改。正如其他人所评论的那样,没有内置的方法可以精确地完成您想要的事情,您需要自己实现它。
另外,本杰明会提出一个有趣的模式,称为Decorator模式,如果无法修改相关代码,该模式可能对您有用。您可以在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());
现在,您的其余代码将按常规使用object,不同之处在于每个函数调用都会被记录或通知,等等。
正如您将在Wikipedia中看到的那样,这通常是通过相关类继承自的接口来完成的,但是在您的情况下可能无法实现。