所以我真的想要某种方法来检测某个对象的Field变化。我用谷歌搜索了一段时间,但没有找到任何东西。所以基本上我需要知道的是,当一个对象的变量发生变化时。我们以此类为例:
public class Example{
String text = "test";
public static void main(String[] args){
Example e = new Example();
e.text = "something else";
}
}
我基本上想要检测'文本'变量已经改变。 我知道很多人会说使用getter和setter等等,这不是我想要的。
由于一个我无法解释的原因,我需要能够从课外发现字段变化。目前我正在考虑使用第二个线程,它基本上只是连续扫描对象列表并使用反射来检测这种变化,但这显然会使程序比它必须更重。
所以我希望有一种方法可以只为字段更改创建监听器,有没有人知道这样做的库/系统/方法?
答案 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对此并不友好,所以让它运行起来有点痛苦。