On Fri, 9 Dec 2022 18:40:09 GMT, Nir Lisker <[email protected]> wrote:
>> It also removes the need for the `SuppressWarnings` here.
>
> 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"));
?
-------------
PR: https://git.openjdk.org/jfx/pull/969