Sponsoring getting 5015163 "(str) String merge/join that is the inverse of String.split()" into JDK 7

Rémi Forax forax at univ-mlv.fr
Fri Oct 23 08:10:35 UTC 2009

Le 23/10/2009 03:53, Joe Darcy a écrit :
> Joe Darcy wrote:
>> Rémi Forax wrote:
>>> Le 14/10/2009 01:32, Joseph D. Darcy a écrit :
>>>> Hello.
>>>> Following up from threads earlier this year,
>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-February/001061.html 
>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-March/001191.html 
>>>> I'm willing and interested to sponsor getting String.join 
>>>> functionality into JDK 7.
>>>> To address this particular bug, I think there should be new "join" 
>>>> methods on String as opposed to a general "joiner" class.  A more 
>>>> general class could be added later.
>>>> Remi, please point to a current draft of the specification and 
>>>> implementation for your change.
>>>> Kevin, I'm interested in hearing your comments on the API design.
>>>> Thanks,
>>>> -Joe
>>> Hi Joe,
>>> the webrev is here:
>>> http://cr.openjdk.java.net/~forax/5015163/webrev.00/
>>> There is no specification, i.e no more than the javadoc.
>>> I will dig this evening to find the tests I've used,
>>> they are on another computer at home which is currently shutdown.
>>> As Kevin said String.join is perhaps better as a static method,
>>> see first part of:
>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2009-February/001065.html 
>> Yes, I'd also lean toward static methods for this functionality.
> Following up on this, what is the exact revised proposal?
> In java.lang.String:
>    public static String join(String separator, Iterable<?> objects);
>    public static String join(String separator, Object[] objects);
>    public static String join(String separator, Object first, Object... 
> rest);
> with analogous methods in StringBuffer and StringBuilder return that 
> type, respectively, instead of String?

I don't know. In my opinion, the main problem with join specified using 
static methods is that
split is not currently specified as a static method.
Because join is the dual of split, one could find the usage of static 
methods weird.

> I assume the motivation for having both the Object[] and (Object, 
> Object...) versions is to avoid unnecessary array creation in the case 
> of one argument since the single method join(String, Object...) could 
> also be used.

The problem is that if there is only one method:
public static String join(String separator, Object... objects);
then a call to that method with by example an array of String will raise 
a warning.

So this method was split (no pun intended) in two to avoid this warning.

> -Joe


More information about the core-libs-dev mailing list