如何观察变量的变化

我想知道是否有什么办法可以在程序运行时观察变量值的变化。当然不使用调试器,我想以 。例如:

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

回到顶部