java - 获取静态变量(类变量)的 PropertyChangeListener 通知

标签 java static propertychangelistener

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

最佳答案

这取决于您如何访问静态变量。如果您使用静态 setter 方法来更改它,并保持变量私有(private),这很容易:

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 成为同步方法,以防多个线程想要设置该值,您可能希望在其他人再次更改该值之前通知所有监听器,但这取决于您的要求.

关于java - 获取静态变量(类变量)的 PropertyChangeListener 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12063599/

相关文章:

java - 从 HTTPSampler 获取 HTTPClient 以在 Beanshell 中使用它

java - 为什么 JDBC 身份验证在 Spring Boot 和 React 中因 CORS 失败?

java - 通知 "remote"JComponent 有关更改

java - 如何禁用 JAR 文件的本地化?

php - 显式静态调用基类的成员函数

Java静态嵌套类与顶级类

javascript - 如何自动重新加载使用静态站点生成运行的 next.js?

Java FX - 事件处理的不同方面

java - TomEE 7.0.2 如何禁用 CXF + RS