java - 如何观察变量的变化

标签 java variables reflection

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

class A
{
   public static int valueToBeWatched;
}

所以在运行时,如果我项目中任何类的任何方法修改了这个值,MyValueChangeListner 事件应该被调用。

最佳答案

你不能。 Java 本身没有内置修改修改 Hook 。 显然,您可以进行轮询。但那样就不会“直播”了。

AspectJ 可能允许这样的想法,但我不确定它是否适用于原始变量,或者仅当您使用 getter 和 setter 时才适用。

干净的 Java 方式是使变量 private 并使用 getter 和 setter。

private valueToBeWatched;

public void setValue(int newval) {
  valueToBeWatched = newval;
  notifyWatchers();
}

public int getValue() {
  return valueToBeWatched;
}

附带说明,尽可能避免static。特别是 public 但不是 final

关于java - 如何观察变量的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12386604/

相关文章:

bash - 将文件名分配给shell中的变量

java - 如何从广播接收器访问变量?

java - 我可以覆盖 Java 中的私有(private)方法吗?

java - Hibernate 无法反序列化错误

java - 有没有一种方法可以像获取鼠标位置一样轻松地按下按键

java - 在无限循环中执行事件

java - Android ListView : Return one of multiple views from getChildAt()?

python类变量按值查找

c# - 调用给定类型名称的静态函数

java - 使用 Varargs,我可以根据变量名称为变量赋值吗?