Non interference enforcement

Brian Goetz brian.goetz at oracle.com
Wed Sep 26 06:52:29 PDT 2012


ListIterator does not currently have a forEach method (nor does 
Iterator, for that matter.)  And its remove method is nilary.  So I 
guess I do not follow your question?



On 9/26/2012 9:45 AM, Joe Bowbeer wrote:
> Btw, at first glance, this code snippet looked like ListIterator code
> that would be allowed.
>
> What about the following?  Is it legal?
>
> listIterator.forEach(e -> { listIterator.remove(e); });
>
>
> On Wed, Sep 26, 2012 at 6:26 AM, Remi Forax <forax at univ-mlv.fr
> <mailto:forax at univ-mlv.fr>> wrote:
>
>     We currently ask users to write lambdas that doesn't interfere with
>     the source collection
>     of a stream but it's not enforced in the code.
>
>     By example,
>        list.stream().forEach(e -> { list.remove(e); });
>     may works or not depending how the pipeline is implemented.
>
>     This is a serous departure for the current way java.util collections
>     works
>     and I wonder if we should not keep the fail-fast guarantee for those
>     collections.
>
>     Rémi
>
>


More information about the lambda-libs-spec-observers mailing list