Hi Mike,

I suppose there could also be implementations of removeIf that always throw UOE 
regardless of whether an element matched or not i.e. those that override just 
to throw UOE.

So perhaps:

* @throws UnsupportedOperationException if elements cannot be removed 
*         from this collection.  Implementations may throw this exception if a
*         matching element cannot be removed or if, in general, removal is not 
*         supported.

Paul.

On Sep 13, 2013, at 11:52 PM, Mike Duigou <mike.dui...@oracle.com> wrote:

> Hello all;
> 
> A very small patch that refines the declared conditions under which the 
> Collection.removeIf() method will throw UOE. The intent of this patch is to 
> allow the default implementation to be used for immutable collections. It's 
> important that the default implementations provided and the specifications of 
> the methods allow for the behaviour which results from using the default 
> method implementation on any reasonable implementation including immutable 
> implementations. In this case there was a bug originally written against 
> j.u.Arrays.asList() The bug asserted that it's removeIf() implementation was 
> "lazy" and only throws UOE when an element is to be removed. One possible 
> solution was to add a non-default implementation of removeIf() to the 
> Arrays.asList()-List. Since the default method definition must also satisfy 
> other potential immutable implementations we decided to enhance the UOE 
> conditions rather than paper over the problem by adding a default.
> 
> (There are a couple of other similar issues which will have similar solutions)
> 
> http://cr.openjdk.java.net/~mduigou/JDK-8023339/1/
> 
> Mike
> 

Reply via email to