I think there are two things at stake here, one is that as I understand it, "new means new", in every case. This is at least partly why the constructors on soon-to-be value objects are deprecated; they become meaningless. The other is that if the presumption is that we should always intern new Strings, I must disagree. Pooling takes time and memory to manage, and if there are very few duplicates, it's a waste of both. I believe it should be up to the programmer to decide if this is appropriate in their situation. Of course, the GC system seems to be capable of stepping in in some incarnations, which adds something of a counterexample, but that is, if I recall, configurable.
On Thu, Dec 23, 2021 at 2:53 PM Xeno Amess <xenoam...@gmail.com> wrote: > never should,as Object can be use as lock. > > XenoAmess > ________________________________ > From: core-libs-dev <core-libs-dev-r...@openjdk.java.net> on behalf of > Bernd Eckenfels <e...@zusammenkunft.net> > Sent: Friday, December 24, 2021 5:51:55 AM > To: alan Snyder <fishgar...@cbfiddle.com>; core-libs-dev < > core-libs-dev@openjdk.java.net> > Subject: Re: a quick question about String > > new String() always creates a new instance. > > Gruss > Bernd > -- > http://bernd.eckenfels.net > ________________________________ > Von: core-libs-dev <core-libs-dev-r...@openjdk.java.net> im Auftrag von > Alan Snyder <javali...@cbfiddle.com> > Gesendet: Thursday, December 23, 2021 6:59:18 PM > An: core-libs-dev <core-libs-dev@openjdk.java.net> > Betreff: a quick question about String > > Do the public constructors of String actually do what their documentation > says (allocate a new instance), or is there some kind of compiler magic > that might avoid allocation? > > -- Simon Roberts (303) 249 3613