Огневые события в Яве - PullRequest
       4

Огневые события в Яве

2 голосов
/ 19 ноября 2011

Почему метод firePropertyChange (String propertyName, Object oldValue, Object newValue) в классе PropertyChangeSupport не проверяет, что старое и новое значение могут быть нулевыми одновременно?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2011

PropertyChangeEvent javadoc может дать некоторую подсказку об этом:

Нулевые значения могут быть предоставлены для старых и новых значений, если их истинные значения неизвестны.

Источник события может отправить нулевой объект в качестве имени, чтобы указать, что произвольный набор, если его свойства изменились. В этом случае старый и новые значения также должны быть нулевыми.

Таким образом, похоже, что oldValue==null и newValue==null могут иметь какое-то особое значение, когда source==null также. Из-за этого может потребоваться всегда распространять изменения, когда оба значения равны nulls, даже если они одинаковы.

0 голосов
/ 19 ноября 2011

Я не уверен, что вы имеете в виду, но вот фактический код, который, безусловно, более понятен, чем я, пытаясь это объяснить:)

/**
     * Reports a bound property update to listeners
     * that have been registered to track updates of
     * all properties or a property with the specified name.
     * <p>
     * No event is fired if old and new values are equal and non-null.
     * <p>
     * This is merely a convenience wrapper around the more general
     * {@link #firePropertyChange(PropertyChangeEvent)} method.
     *
     * @param propertyName  the programmatic name of the property that was changed
     * @param oldValue      the old value of the property
     * @param newValue      the new value of the property
     */
    public void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
        if (oldValue == null || newValue == null || !oldValue.equals(newValue)) {
            firePropertyChange(new PropertyChangeEvent(this.source, propertyName, oldValue, newValue));
        }
    }
...