RFR: JDK-8298200 Clean up raw type warnings in javafx.beans.property.* and com.sun.javafx.property.* [v2]

Nir Lisker nlisker at openjdk.org
Fri Dec 9 20:22:11 UTC 2022


On Fri, 9 Dec 2022 20:11:24 GMT, John Hendrikx <jhendrikx at openjdk.org> wrote:

>> I suggest the following method:
>> 
>> 
>>     @Override
>>     public boolean equals(Object obj) {
>>         if (this == obj) {
>>             return true;
>>         }
>>         if (!(obj instanceof List<?> otherList)) {
>>             return false;
>>         }
>>         if (size() != otherList.size()) {
>>             return false;
>>         }
>>         ListIterator<E> e1 = listIterator();
>>         ListIterator<?> e2 = otherList.listIterator();
>>         while (e1.hasNext() && e2.hasNext()) {
>>             if (!Objects.equals(e1.next(), e2.next())) {
>>                 return false;
>>             }
>>         }
>>         return true;
>>     }
>> 
>> 
>> Technically, there's no need to check `hasNext` on both since they have the same length, but it doesn't matter.
>> 
>> I also don't like the names `e1` and `e2` for list iterators :)
>
> There is a lot to not like about this method.  Especially because apparently you can pass in a `List` to this equals method that is for a `ReadOnlyListProperty`.  How is a list equal to a property?  What sense does it make to do this:
> 
>      ReadOnlyListProperty<String> x;
> 
>      x.equals(List.of("a", "b", "c"));
> 
> Shouldn't that be:
> 
>      x.get().equals(List.of("a", "b", "c"));
> 
> ?

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.

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

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


More information about the openjfx-dev mailing list