Equality
Brian Goetz
brian.goetz at oracle.com
Fri Dec 18 17:48:35 UTC 2015
> Limiting value type V to only override equals(V x) seems to have
> the same simplifying impact on Collection.contains and others. Yes?
In our attempt on Collections, we found that contains(V), while
prettier, might not be enough. In particular, it wasn't enough for
providing the skeletal implementation of removeAll(Collection<? extends
V>) in AbstractCollection, which looks like:
Iterator<E> it = iterator();
while (it.hasNext()) {
if (c.contains(it.next())) {
it.remove();
modified =true;
}
}
Here, c is a Collection<? extends E>, so its contains method would be
contains(capture(? extends E)), and it.next() returns a E, so the
compiler doesn't like it. If I found this idiom in the first few
minutes of trying to port collections, I'm guessing it will occur
elsewhere too.
So perhaps what this says is we are going to get pushed in the other
direction -- that we'll want to superate equals().
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/valhalla-spec-experts/attachments/20151218/f66d5eaf/attachment.html>
More information about the valhalla-spec-experts
mailing list