0
我看到一个前。使用以下类为:Java - PropertyChangeListener
private static PropertyChangeListener listener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent event) {
// Method definition
}
}
1)我的第一个问题是,它如何实例化一个接口?
java.beans: Interface PropertyChangeListener
2)在我见过的大多数例子,他们增加的PropertyChangeSupport(),如以下几点:
public class MyClass{
private PropertyChangeSupport pcs;
public MyClass(PropertyChangeListener listener) {
pcs = new PropertyChangeSupport(this);
pcs.addPropertyChangeListener(listener);
}
public void method() {
if (condition) {
pcs.firePropertyChange();
}
}
}
在我的课,该方法而不是静态方法。
我没有在任何例子中看到,PropertyChangeSupport被定义为静态变量,我不确定它正确的做什么?
是否有任何性能问题B/C它将观察所有类的静态变量?
虽然firePropertyChange()仅适用于其中一个变量。
这是我如何使用它:
public class MyClass{
private static PropertyChangeSupport pcs = new PropertyChangeSupport(MyClass.class);
public static void method(PropertyChangeListener listener) {
pcs.addPropertyChangeListener(listener);
if (condition) {
pcs.firePropertyChange();
}
}
}
我以前是这样的类,但这种方法被称为很多次,我不希望创建一个新的PC对象每次我这个时候打电话方法,所以我改变它像上面 - 定义为静态变量 - 不知道哪种做法更好。
public class MyClass{
public static void method(ConcurrentMap map, PropertyChangeListener listener) {
// pcs is defined to observe only map.
PropertyChangeSupport pcs = new PropertyChangeSupport(map);
pcs.addPropertyChangeListener(listener);
if (condition) {
pcs.firePropertyChange();
}
}
}
任何帮助不胜感激。
我用ProperyChangeSupport添加监听建议更换。当pcs.firePropertyChange();被调用,propertyChange()方法将被调用。 – blueSky
在我的课上someMethodThatChangesTheProperty()是静态的;你打算怎么写呢? – blueSky
使侦听器,addPropertyChaneListener和firePropertyChange也是静态的 – wastl