java字段更改侦听器

时间:2016-03-02 20:59:16

标签: java reflection field listener

所以我真的想要某种方法来检测某个对象的Field变化。我用谷歌搜索了一段时间,但没有找到任何东西。所以基本上我需要知道的是,当一个对象的变量发生变化时。我们以此类为例:

public class Example{
    String text = "test";

    public static void main(String[] args){
        Example e = new Example();
        e.text = "something else";
    }
}

我基本上想要检测'文本'变量已经改变。 我知道很多人会说使用getter和setter等等,这不是我想要的。

由于一个我无法解释的原因,我需要能够从课外发现字段变化。目前我正在考虑使用第二个线程,它基本上只是连续扫描对象列表并使用反射来检测这种变化,但这显然会使程序比它必须更重。

所以我希望有一种方法可以只为字段更改创建监听器,有没有人知道这样做的库/系统/方法?

1 个答案:

答案 0 :(得分:2)

让我们恢复生机:)

有几种方法:

第一个,我认为就像Java 6一样,使用Bound Properties inside Java Beans(是的,它也可以在JavaSE中使用)。

  

绑定属性在其值发生更改时通知侦听器。这有两个含义:

     

bean类包含addPropertyChangeListener()和removePropertyChangeListener()方法,用于管理bean的侦听器。   当绑定属性发生更改时,bean会将PropertyChangeEvent发送到其注册的侦听器。   PropertyChangeEvent和PropertyChangeListener存在于java.beans包中。

     

java.beans包还包含一个类PropertyChangeSupport,它负责绑定属性的大部分工作。这个方便的类跟踪属性侦听器,并包含一个方便的方法,可以向所有已注册的侦听器触发属性更改事件。

在第二部分中,您可以免费获得大部分内容,包括Java 7(javafx 2.0)和it's called JavaFX Properties

  

您还可以添加更改侦听器,以便在属性值发生更改时收到通知,如图所示。您还可以添加更改侦听器,以便在属性值发生更改时收到通知。

后者的缺点是JPA对此并不友好,所以让它运行起来有点痛苦。