Interpolácia reťazcov je populárna syntax pre dynamickú tvorbu reťazcov. Väčšina moderných programovacích jazykov podporuje interpoláciu v nejakej podobe.
Príklad pre jazyk Python:
name = 'John Doe' age = 34 msg = f'{name} is {age} years old' print(msg)
Java po rokoch prináša svoju obdobu interpolácie reťazcov. Pod názvom String Templates ju definuje JEP 459: String Templates (Second Preview) v najnovšej verzii Javy 22.
Okrem zjednodušenia syntaxe vytvárania reťazcov dokument zvlášť zdôrazňuje bezpečnostný aspekt, pretože táto syntax veľmi ľahko môže spôsobiť bezpečnostnú dieru.
Java má zabudované tri základné druhy template processorov: STR
, FMT
a RAW
. Ten prvý sa nachádza v java.lang
mennom priestore, preto ho netreba zvlášť importovať. Zvyšné je potrebné vložiť do súboru statickým importom.
import static java.lang.StringTemplate.RAW; import static java.util.FormatProcessor.FMT; void main() { String name = "John Doe"; int age = 35; System.out.println(STR."\{name} is \{age} years old"); System.out.println(FMT."%s\{name} is %d\{age} years old"); System.out.println(RAW."\{name} is \{age} years old"); }
Príklad ukazuje použitie daných zabudovaných procesorov. Namiesto tradičného doláru používa syntax spätné lomítko.
$ java --enable-preview --source 22 First.java John Doe is 35 years old John Doe is 35 years old StringTemplate{ fragments = [ "", " is ", " years old" ], values = [John Doe, 35] }
Ono by to nebola Java kebyže nepríde s podstatne komplexnejším riešením. String Templates umožňujú vytvoriť svoje vlastné string procesory. Toto riešenie je svojimi možnosťami niekde medzi tradičnou interpoláciou a šablónovými knižnicami, ako sú naprílad Jinjava alebo Freemarker.
Tesne pred vypustením najnovšej verzie Javy prišla informácia, že sa pre String Templates chystajú nejaké doplnky či úpravy. Preto si na konečnú syntax budeme musieť ešte nejakú chvíľu počkať.