RFR: 5015163 "(str) String merge/join that is the inverse of String.split()" into JDK 8

Rémi Forax forax at univ-mlv.fr
Tue May 1 11:02:15 UTC 2012


On 04/30/2012 04:23 PM, Jim Gish wrote:
> Thanks Rémi,
>
> I'll take a look at defender methods on Iterable.
>
> As far as the parameter checks on String -- I had the same "Aha!" 
> moment as soon as I got in my car to drive home on Friday. 

:)

> However, it does come down to a philosophy of style in that I'm in 
> favor of (1) catching and reporting errors as soon as possible, and 
> (2) not depending on the implementation details of other methods 
> (particularly other classes) of which I'm a client. 

These checks are part of the spec of the method then part of the 
implementation,
that's why I think it's Ok tu use them.

> On the other hand, given this is "core" I realize that performance 
> matters as well as locality of reference, so there is a trade off 
> between deferring the check and sharing the static result message string.

The main issue with sharing static strings is that slowdown the startup 
of the VM.
The core classes do already too much static initialization for very 
little benefit,
by example, loading a string requires to initialize 
String.CASE_INSENSITIVE_ORDER
even if this comparator is not actually used.

BTW, a good project should be to try to remove most of the private 
static fields
from the public java.lang classes in order to defer their initializations.

>
> Let's see what others think.
>
> As far as transient on the static field -- I also realized as I was 
> driving away that statics might not be serialized so transient is 
> unnecessary.
>
> Thanks,
>    Jim

cheers,
Rémi




More information about the core-libs-dev mailing list