Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



K čemu je prázdný String konstruktor - new String() ?

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

Re: K čemu je prázdný String konstruktor - new String() ?

Autor: Natix ♂

0:00:26 17.09.2012

Jo, to budu já. :)

Hm, to použití na unikátní privátní objekt docela dává smysl, něco ve stylu:

private static final Object LOCK = new Object();

Citovat příspěvek

 

Re: K čemu je prázdný String konstruktor - new String() ?

Autor: Maaartin ♂

20:43:26 16.09.2012

Natix napsal/a

Nebo tu prostě žádný důvod není a holt v Javě 1.0 ten konstruktor jednou dali public, tak tu bude už navždycky strašit? Tuší někdo?



No... jako spousta veci v Jave je to na straseni. Uz jsem pouzil nekde pouzil

private final static BLA = new String("BLA");

jako marker neceho, vypadalo to asi jako

if (map.get(key) == BLA) { // pockej, zrovna se nekde zpracovava... }

Tim ze BLA je privatni, tak je jednoznacne odliseny od vseho ostatniho a nemuze se tam dostat nahodou. Byl bych tam mohl pouzit i `new String()` a usetrit par bajtu :D, ale tohle bylo lepsi pro debugovani.

Takze `new String(String)` ma tohle divny pouziti (donedavna mel jeste jedno kdyz `String.substring` fungoval jinak), ale samotny `new String()` je tim az uplne redundantni.

BTW, zrovna jsem odepisoval jednomu Natixovi na SO, jses to ty? Location Prague, takze asi jo. :D

Citovat příspěvek

 

K čemu je prázdný String konstruktor - new String() ?

Autor: Natix ♂

23:39:23 14.09.2012

Zdravím,

vím, že stringové literály jsou v Javě internované.
Vím, že ("" == "") je true, ale že (new String() == "") je false.
Taky vím, že string získaný voláním subString sdílí char polem s původním stringem, což může způsobit memory leak, pokud vyrábím z hodně velkého stringu malinký substring, takže je v takovém případě potřeba volat new String(String).

Ale nedokážu přijít na žádný use case pro defaultní konstruktor new String(). Nenapadá mě situace, kdy bych potřeboval mít prázdný string, který nebude identický s tím, který je internovaný v poolu.

Že by nějaké obskurní použití v IdentityHashMap, WeakHashMap nebo něčem podobném? Nebo tu prostě žádný důvod není a holt v Javě 1.0 ten konstruktor jednou dali public, tak tu bude už navždycky strašit? Tuší někdo?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: