RFR: 8367439: Bulk change notifications for ObservableSet and ObservableMap [v3]

Andy Goryachev angorya at openjdk.org
Fri Oct 24 18:09:26 UTC 2025


On Fri, 24 Oct 2025 00:12:01 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:

>> modules/javafx.base/src/main/java/javafx/collections/MapChangeListener.java line 110:
>> 
>>> 108:          * reported with subsequent listener invocations.
>>> 109:          * <p>
>>> 110:          * After this method has been called, the current {@code Change} instance is no longer valid and
>> 
>> The language might be a bit confusing (it is to me, at least, where you say it might be the same instance but it is no longer valid?  how is that even possible?).
>> 
>> Perhaps it could be rephrased to something like 'the Change instance returned by this method might be a different and must be used in subsequent operations' or something to that effect.
>
> Yes, I see that this can be confusing. What I want to bring across is that:
> 1. You are not allowed to retain a reference to the "last" change instance and expect it to give you correct information after `next()` has been called.
> 2. You are not allowed to assume, just because the next change instance is the same object as the previous instance, that we're dealing with the same change.
> 
> How about this version:
> 
>  * Callers must not make any assumptions about the identity of the {@code Change} instance
>  * returned by this method; even if the returned instance is the same as the current instance,
>  * it must be treated as a distinct logical change. Callers must also not retain a reference
>  * to a previous {@code Change} instance and expect it to be valid after this method has been
>  * called. Calling any method on an earlier change may result in undefined behavior.

this is still a bit confusing... "identity" where did that come from?

maybe just tell them what they need to do instead: discard the last instance and use the one returned by `next()` instead?  what do you think?

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1885#discussion_r2461481444


More information about the openjfx-dev mailing list