Primitivni typy mi k srdci neprirostly, ale String se (temer vzdy, az na memory problem, ktery tu zminil Petr Synek) chova logicky a ocekavatelne. Kdyz chci String nekam priradit, tak ho priradim, kdyz chci vytvorit novy, pouziju new a konstruktor. Zakazat to nejde, protoze se to zridka, ale preci jen hodi. Optimalizovat to (casto) nejde: Ota tu mel priklad s rovnostmi, dalsi problematicke misto by vybehlo pri synchronizacich. new String("foo") v jazyce ma sve misto. Ale zaroven je to neco, co se da snadno detekovat a snad vsechny nastroje na statickou analyzu kodu pri takovem pouziti varuji. Takze pokud to clovek v kodu (at z neznalostni nebo po rade uprav, kdy uz nevnima, kam az zasel) ma, tak je u nej spatne i neco jineho. S pozdravem Ondřej Nekola
2011/2/8 Jiří Hradil <ji...@hradil.cz>: > Rekl bych, ze prave: > > String s = new String( "Daka hodnota stringu" ); > > je problem jazyka samotneho, ze neco podobneho umozni. Jazyk si ma > optimalizace ridit vnitrne sam, nikoli to vyzadovat po programatorovi. > Co ten chudak udelal neboheho? Vzdyt pouzil objekt String jako ostatni > objekty, tak ho to v OOP ucili. To, ze Java na halde vytvori vzdy novy > objekt a diky tomu pak muze byt program neefektivni, je problem > samotneho navrhu jazyka, nikoli programatora. To je jako kdybych > nekoho ucil sproste mluvit a pak ho zliskal za to, ze rekl ku..a :). > Specialne primitivni typy a kockopsy jako String delaji Javu slozitou.