RFR: 8290310: ChangeListener events are incorrect or misleading when a nested change occurs [v5]

Nir Lisker nlisker at openjdk.org
Wed Mar 12 01:49:02 UTC 2025


On Fri, 21 Feb 2025 21:42:03 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:

>> modules/javafx.base/src/main/java/com/sun/javafx/binding/ListenerManagerBase.java line 41:
>> 
>>> 39:  * @param <I> the type of the instance providing listener data
>>> 40:  */
>>> 41: public abstract class ListenerManagerBase<T, I extends ObservableValue<? extends T>> {
>> 
>> Is this a class and not an interface because of the need for `protected` methods?
>
> I think I extracted this when I discovered that I needed two implementations (caching one and one that doesn't need caching, to save more memory).
> 
> Looking at it now (over a year later) I suppose it could also be an interface.  There is no risk that any of this gets exposed as the property classes will all create a private class to implement the abstract methods.
> 
> It can be changed at any time as it is internal.  If we want to make it an interface, I'm going to need to think of a good name for it (`ListenerDataProvider`, `ListenerDataStore`, ... )

Just making sure you didn't forget to consider this. Fine to leave as is also.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1081#discussion_r1990401323


More information about the openjfx-dev mailing list