在我的代码中,我需要知道特定静态变量何时更改是值。我知道在 Java 中我可以将自己注册为实例变量的侦听器,但我不能使用静态(类)变量来做到这一点。任何人都可以解决这个问题吗?谢谢
问问题
1891 次
2 回答
3
这取决于您如何访问静态变量。如果您使用静态 setter 方法来更改它,并保持变量私有,这很容易:
public class Foo {
private static int bar = 0;
private static PropertyChangeSupport propertyChangeSupport =
new PropertyChangeSupport(Foo.class);
public static void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public static void setBar(int bar) {
int oldVal = Foo.bar;
Foo.bar = bar;
propertyChangeSupport.firePropertyChange("bar", oldVal, Foo.bar);
}
}
当然,如果多个线程想要设置值,您可能希望 setBar 成为同步方法,您可能希望在其他人可以再次更改值之前通知所有侦听器,但这取决于您的要求。
于 2012-08-22T00:48:25.153 回答
1
您始终可以使用静态访问器包装您的静态变量,并在这些访问器中添加代码。
于 2012-08-21T21:55:01.677 回答