Sponsoring getting 5015163 "(str) String merge/join that is the inverse of String.split()" into JDK 7
Joseph D. Darcy
Joe.Darcy at Sun.COM
Mon Oct 26 16:08:53 UTC 2009
Stephen Colebourne wrote:
> Not wishing to confuse the debate, but perhaps the correct place for
> this is a static Strings class, that parallels Objects.
>
> We all know that there are lots of possible methods for such a class,
> but even if JDK7 had just a few, that would be a good start.
>
> Joe, would you be prepared to sponsor a Strings class, and see join on
> there instead of String?
>
No.
While I believe a "StringUtils" class would have been appropriate early
in the platform's life to host more advanced string manipulation
facilities, I don't think adding such a class now is the right design.
IMO, the join method, whether it is an instance method or a static one,
should live in java.lang.String.
-Joe
> Stephen
>
>
> 2009/10/23 Kevin Bourrillion <kevinb at google.com>:
>
>> FYI,
>> While I certainly love my "Joiner" baby, and while y'all have blanket
>> permission to make use of any of our code you want, I think it's entirely
>> appropriate for the JDK to just hit the 80% case with a static method
>> directly on String.
>> (And yes, the fact that split() is an instance method is a false parallel.)
>>
>>
>> On Fri, Oct 23, 2009 at 8:58 AM, Joe Kearney <Joe.Kearney at morganstanley.com>
>> wrote:
>>
>>> Hi,
>>>
>>> From the peanut gallery, it seems to me that there is a genuine reason to
>>> leave join as a static method (if we're not going after the
>>> google-collections approach of a Joiner class) in that split acts on one
>>> existing String, whereas join creates one from others. On which object would
>>> you call the join method? The separator? I know this was covered on this
>>> list before, but it still strikes me as looking a little wierd.
>>>
>>>
>>>> ",".join("a", "b", "c")
>>>>
>>> versus
>>>
>>>> Joiner.on(",").join("a", "b", "c")
>>>>
>>> Thanks,
>>> Joe
>>>
>>> 2009/10/23 Mark Reinhold <mr at sun.com>
>>>
>>>>> Date: Fri, 23 Oct 2009 10:10:35 +0200
>>>>> From: Rémi Forax <forax at univ-mlv.fr>
>>>>>
>>>>> Le 23/10/2009 03:53, Joe Darcy a écrit :
>>>>>
>>>>>> 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 agree. The join methods should be instance methods, not static
>>>> methods.
>>>>
>>>> - Mark
>>>>
>>
>> --
>> Kevin Bourrillion @ Google
>> internal: http://go/javalibraries
>> external: guava-libraries.googlecode.com
>>
>>
>>
More information about the core-libs-dev
mailing list