Proposal: JDK-8148917 Enhanced-For Statement Should Allow Streams

Alan Snyder javalists at
Mon Mar 11 23:36:51 UTC 2019

Also, if the upper bound is an expression, the range() approach makes it clear that the upper bound expression is intended to be evaluated once.

> On Mar 11, 2019, at 4:07 PM, John Rose <john.r.rose at <mailto:john.r.rose at>> wrote:
> P.S. I also saw the fiery objections to the range() idiom, and I have
> to disagree with those disagreers!  I prefer the range idiom to the
> multi-part for-init-test-step idiom, because counters are semantically
> *more complex* than ranges, from the viewpoints I typically use to
> reason about programs.  (There are times when a separate counter
> state *is* preferable to me, but usually when there is some sort of
> extra "i += skip" side effect in the loop.)  That's got to be a matter of
> taste.  I suppose some people habitually reason about programs
> in lower-level terms, like x86 instructions, and there a counter is no
> more complex than a range; for those people there's no reason to
> learn a different concept than a for-loop.  And surely there are other
> points of view that favor the good old for-loop-with-int-counter.
> I'm more tolerant of new-fangled range-based notations because they
> let me avoid having to reason about side-effect-laden entities
> like counters, and that feels like a good thing to me.  Tastes vary.

More information about the core-libs-dev mailing list