如何观察变量的变化
我想知道是否有什么办法可以在程序运行时观察变量值的变化。当然不使用调试器,我想以 。例如:
class A{
public static int valueToBeWatched;
}
因此,在运行时,如果在我的项目中任何类的任何方法中修改了此value MyValueChangeListner
事件,则应调用该事件。
回答:
您需要int
用一个类替换该类型,该类将在值更改时调用您的侦听器。您可能想忽略未实际更改的值的设置。
例如
private int value; private final MyValueChangeListener listener;
public void setValue(int value) {
if(this.value == value) return;
listener.changed(this, this.value, value);
this.value = value;
}
您可以使用字节码注入执行此替换,但是更改原始代码非常简单。
一种替代方法是监视该值以定期查找更改。除非值变化非常缓慢,否则您可能看不到每一个变化。您可以使用Debugger
API来执行此操作,但这并不简单,除非您已经熟悉该API,否则我不建议您使用它。
Java调试器API链接
http://java.sun.com/javase/technologies/core/toolsapis/jpda/
http://docs.oracle.com/javase/6/docs/technotes/guides/jpda/
http://docs.oracle.com/javase/6/docs/jdk/api/jpda/jdi/
以上是 如何观察变量的变化 的全部内容, 来源链接: utcz.com/qa/402375.html