[8u] API Request: RT-25613, ObservableValue should have a hasListener(listener) method
Stephen F Northover
steve.x.northover at oracle.com
Wed Jan 22 09:23:14 PST 2014
If we add this API, I like addListener(InvalidationListener, boolean)
better than ensureListener().
Steve
On 2014-01-22 8:20 AM, Ali Ebrahimi wrote:
> I suggest adding another overload for addListener method taking boolean
> parameter "duplicateAllowed" or "duplicateNotAllowed".
>
>
> On Wed, Jan 22, 2014 at 3:00 PM, Richard Bair <richard.bair at oracle.com>wrote:
>
>>>> The default implementation (for Observable) would look like this:
>>>>
>>>> public default void ensureListener(InvalidationListener listener) {
>>>> removeListener(listener);
>>>> addListener(listener);
>>>> }
>>>>
>>>> subclasses might do something more effective. The same would apply to
>>>> ObservableValue and ChangeListener and Observable[List|Set|Map] and
>>>> [List|Set|Map]ChangeListener.
>>> Well this would destroy the order! I expect listeners to be called in
>>> the correct order not?
>> That’s a good point :-(
>>
>>> Why doing a remove and not simply check if the
>>> listener has already been added?
>> Because there is no way to check, except in the implementation. From the
>> Observable interface level, there is no way to a) force all implementations
>> of the interface to implement the method correctly (without breaking source
>> compatibility anyway), or b) to provide a reasonable default implementation.
>>
>> Maybe this is one of those things we can’t fix on the Observable interface
>> and just have to provide implementations of on our concrete properties.
>>
>> Richard
More information about the openjfx-dev
mailing list