In Java 21, String Templates have been introduced as a preview language feature, that allow text and expressions to be composed safely and efficiently, without using the +
operator.
Here is an example:
int x = 5, y = 6; String s = STR."\{x} plus \{y} is equal to \{x + y}"; // evaluates to: "5 plus 6 is equal to 11"
In this example, STR
is a template processor. The template is \{x} plus \{y} is equal to \{x + y}
and \{x}
is one of the embedded expressions in the template. The STR
template processor is defined in the Java Platform (and is automatically imported into every Java source file), and it performs string interpolation by evaluating the embedded expressions.
More examples:
// you can invoke methods, access fields, use ternaries String s = STR."\{user.name}: Access \{user.hasAccess() ? "Granted" : "Denied"}"; // multi-line template expression String xml = STR.""" <book> <author>\{author}</author> <title>\{title}</title> </book> """;
FMT Template Processor
FMT is like STR but it also interprets format specifiers which appear to the left of embedded expressions. For example:
double val = 4999.4567; FormatProcessor.FMT."The value is %,.2f\{val}"; // evaluates to: "The value is 4,999.46"
It's quite easy to create your own Template Processor by implementing StringTemplate.Processor
. This is useful if you want to validate inputs before composing the string. It's also possible to return an object of any type, not just String
. For instance, a SQL Template processor could first sanitise the input to prevent a SQL injection attack, and then return a PreparedStatement
instead of a String
.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.