On Sat, 10 Dec 2022 08:03:27 GMT, John Hendrikx <jhendr...@openjdk.org> wrote:

>> I was just going to write that now that I look at it, this is a list 
>> comparison according to `List::equals`. No need to redo the whole logic..
>> 
>> About the validity of the comparison, `ReadOnlyListProperty` also implements 
>> `List`:
>> 
>> ReadOnlyListProperty<E> extends ListExpression<E>
>>   ListExpression<E> implements ObservableListValue<E>
>>     ObservableListValue<E> extends ObservableObjectValue<ObservableList<E>>, 
>> ObservableList<E>
>>       ObservableList<E> extends List<E>, Observable
>> 
>> So... it's also a list.
>
>> So... it's also a list.
> 
> I think it's a big mess, you can already see that in the hierarchy, extending 
> both `ObservableObjectValue<ObservableList<E>>` (which is 
> `ObservableValue<T>`) but also being a `ObservableList<E>`.  One or the other 
> is going to break; either it is a property containing a list, or it is a 
> list, it can't be both.
> 
> Either I can do:
> 
>      listProperty.equals(normalList);
> 
> or:
> 
>      listProperty.equals(aNormalPropertyContainingAList);
> 
> It looks like the first was chosen (I suppose because the `List` interface 
> defines `equals` in that way) and the 2nd case will break (and is unfixable 
> as equals needs to be symmetric).
> 
> Looking a bit further, I think extending 
> `ObservableObjectValue<ObservableList<E>>` was a mistake here. It's also what 
> contributes to making the collection properties so confusing (ie. you can 
> replace all elements, or you can replace the entire list, which are two 
> different actions that require two different forms of listeners) -- no other 
> properties allow you to replace it's "container" -- ie. if properties had 
> used an `AtomicReference` internally to store their value, they would not 
> offer me the option to replace either the entire `AtomicReference` or only 
> the value of the reference.

I've adjusted it now to be a bit more modern Java as per your suggestion.

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

PR: https://git.openjdk.org/jfx/pull/969

Reply via email to