获取有关静态变量的PropertyChangeListener通知(类变量)

时间:2012-08-21 21:52:57

标签: java static propertychangelistener

在我的代码中,我需要知道特定静态变量何时更改是值。我知道在Java中我可以将自己注册为实例变量的监听器,但我不能用静态(类)变量来做。任何人都可以找到解决此问题的方法吗?感谢

2 个答案:

答案 0 :(得分: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成为同步方法,您可能希望在其他人再次更改值之前通知所有侦听器,但这取决于您的要求

答案 1 :(得分:1)

您始终可以使用静态访问器包装静态变量,并在这些访问器中添加代码。