字符串拼接一直是 Java 开发中的高频操作,从最早的 + 拼接,到 String.format(),再到文本块(Text Blocks),JDK 22 引入了 字符串模板(String Templates),不仅让拼接更简洁,还提升了安全性和可维护性。


1. 什么是字符串模板?

字符串模板是一种新的字符串语法,可以直接在字符串中嵌入变量、表达式,甚至进行安全过滤。它的核心思想是将模板字符串与 模板处理器(Template Processor) 结合,实现更强大的功能。


2. 基本用法

import static java.lang.StringTemplate.STR;

public class StringTemplateDemo {
    public static void main(String[] args) {
        String name = "Alice";
        int score = 95;
        String message = STR."学生 \{name} 的分数是 \{score}";
        System.out.println(message);
    }
}

输出

学生 Alice 的分数是 95

3. 变量与表达式插值

不仅能插入变量,还能直接计算表达式:

String result = STR."总价为 \{price * quantity} 元";

4. 安全处理(SQL/XSS 防护)

字符串模板可以结合自定义处理器,自动对变量进行转义,例如生成安全的 SQL:

import static java.lang.StringTemplate.RAW;

public class SqlTemplateDemo {
    public static void main(String[] args) {
        String table = "users";
        String column = "name";
        String query = RAW."SELECT \{column} FROM \{table}";
        System.out.println(query); 
    }
}

通过自定义处理器,可以对 tablecolumn 进行安全校验,防止 SQL 注入。


5. 对比传统方式

方式 可读性 安全性 性能
+ 拼接 无防护
String.format 一般 无防护
字符串模板 可防护

6. 应用场景

  • 日志格式化输出
  • SQL/HTML 模板渲染
  • REST API 请求构造
  • 配合 Text Blocks 生成多行结构化文本

7. 总结

字符串模板让 Java 在字符串处理上更贴近现代语言(如 Kotlin、JavaScript),结合模板处理器的能力,可以同时提升代码可读性与安全性,尤其适合对输出格式有严格要求的业务场景。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐