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.
No.
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
Rémi
More information about the core-libs-dev
mailing list