Hlavní navigace

Názor k článku
Pohled pod kapotu JVM (1.část - prohlížení a modifikace bajtkódu)

Vít Šesták (v6ak) aura:75
13. 12. 2011 12:29 Nový

Runtime constant pool

celé vlákno

Tvrzení, že u dvou řetězcových konstant v téže třídě funguje == jako porovnání řetězců, bych rozšířil silnějším tvrzením: Ono to funguje, i když jsou třídy různé. Je to tak díky runtime constant poolu, které sdílí všechny třídy (AFAIK napříč classloadery). Udělal jsem takový malý experiment: http://ideone.com/snJNS

Trošku problém to může být u testů. Jednou (pri doučování Javy) jsem se setkal s kódem, který na první pohled fungoval korektně, ale jen díky tomu, že stringy pocházely z konstant. Teď přemýšlím, proč jsem nefunkčnost ukazoval tak krkolomně, když by mělo stačit new String("foo").

Na druhou stranu, nepamatuji si, že by se mi někdy povedlo takovou chybu udělat a podepřít si jí funkčním testem.