The motivation was indeed that it would support more efficient Collection.toString. (But, I don't believe anything actually uses that feature right now, other than tests.)

Even if *our* implementations were not to use this because we had a better for-experts construction, I still think this is a useful feature that users classes may benefit from in their own toString methods.

On 4/17/2013 6:15 PM, Jim Gish wrote:
I'm open to this, but am interested in what others have to say,
especially as it relates to other lambda features coming in.  Bear in
mind that this is at least the third major round of reviews for these
changes, the first round being a year ago on lambda-dev, when I first
submitted them, and then they were distilled some more and greatly
simplified by Henry Jen.

Thanks,
    Jim

On 04/17/2013 06:07 PM, Martin Buchholz wrote:
I'm still wondering about whether a joiner utility should support a
prefix and suffix.  The obvious uses for this are collection class
toString methods, but we already know that we can and should implement
those with a single precise char[] construction, so should not use
StringJoiner, or at least not this StringJoiner implementation.  And
if we're just talking about pure convenience, it's hard to beat

"[" + String.join(...) + "]"


On Wed, Apr 17, 2013 at 2:49 PM, Jim Gish <jim.g...@oracle.com
<mailto:jim.g...@oracle.com>> wrote:

    Here's an update:
    http://cr.openjdk.java.net/~jgish/Bugs-5015163-7172553/
    <http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7172553/>
    <http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7172553/>

    Jim


    On 04/17/2013 03:15 PM, Mike Duigou wrote:

        String::

        line 1253: This should use {@code } rather than <code></code>.
        I think regular spaces are OK as well. &nbsp; seems
inappropriate.

        lines 2425/2467: elements may not be null either.

        I can tell you (or maybe it's just me) are itching to change :

        for (CharSequence cs: elements) {
        2477             joiner.add(cs);
        2478         }

        to:

        elements.forEach(joiner::add);

        StringJoiner::

        - <blockquote> isn't needed around <pre> as it's already a
        <div> you probably mean to do

        <pre> {@code
        ...
        }</pre>

        for code samples.

        - It would be nice if the empty output generation in three arg
        constructor could be suppressed unless needed. Perhaps a
        special (not null please!) sentinel value?

        - Four arg constructor doesn't include emptyOutput in @throws NPE


        On Apr 11 2013, at 15:33 , Jim Gish wrote:

            Please review

http://cr.openjdk.java.net/~jgish/Bugs-5015163-7175206-7172553/

<http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7175206-7172553/>

<http://cr.openjdk.java.net/%7Ejgish/Bugs-5015163-7175206-7172553/>

            These are changes that we made in lambda that we're now
            bringing into JDK8.

            I've made a couple of additions - making StringJoiner
            final and adding a couple of constructors to set the
            emptyOutput chars.

            Thanks,
               Jim

            --             Jim Gish | Consulting Member of Technical
Staff |
            +1.781.442.0304 <tel:%2B1.781.442.0304>
            Oracle Java Platform Group | Core Libraries Team
            35 Network Drive
            Burlington, MA 01803
            jim.g...@oracle.com <mailto:jim.g...@oracle.com>


    --     Jim Gish | Consulting Member of Technical Staff |
+1.781.442.0304
    <tel:%2B1.781.442.0304>
    Oracle Java Platform Group | Core Libraries Team
    35 Network Drive
    Burlington, MA 01803
    jim.g...@oracle.com <mailto:jim.g...@oracle.com>



Reply via email to