Doug,<div><br></div><div>I don&#39;t get it. You can set and unset flags on your own EnumSet.  Why isn&#39;t that sufficient?</div><div><br></div><div><br></div><div>    Josh<br><br><div class="gmail_quote">On Thu, Mar 28, 2013 at 11:45 AM, Doug Lea <span dir="ltr">&lt;<a href="mailto:dl@cs.oswego.edu" target="_blank">dl@cs.oswego.edu</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On 03/28/13 13:18, Tim Peierls wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I can&#39;t find a discussion of why Spliterator flags are ints rather than enum.<br>
</blockquote>
<br></div>
We started out with enums on (my) initial Spliterator side vs<br>
control flags internal to streams. The we had to somehow<br>
mesh these to work together. On the stream side, you need<br>
to set and unset various bits across stages. Clearly<br>
you can&#39;t do that to someone&#39;s EnumSet -- they will not expect<br>
you to modify it, but enforcing this makes it both unwieldy and<br>
sleaze-inducing (we&#39;d have to grab underlying representation from<br>
EnumSet).<br>
<br>
Another way of saying this is that we needed an efficient<br>
propagate-by-value small-N bit set mechanism, and the only candidate<br>
was the traditional one. This amounts to the same reason<br>
that nio &quot;interest&quot; flags are done the same way.<span class="HOEnZb"><font color="#888888"><br>
<br>
-Doug<br>
<br>
<br>
<br>
<br>
<br>
</font></span></blockquote></div><br></div>