JDK21 概述
- JDK21 是最新的长期支持(LTS)版本。
- 引入了多个新特性,特别是 JEP430,即字符串模板。
字符串模板动机
- 字符串模板作为预览功能,简化了字符串的拼接。
- 编译和执行需要添加参数:
javac --enable-preview --release 21 Test.java java --enable-preview Test
传统字符串拼接问题
- 使用
+
号拼接字符串,可读性差。 - 使用
StringBuffer
或StringBuilder
,代码冗长。 - 使用
String.format
,字符串与参数分离,不利于阅读和编写。
字符串模板功能
- 借鉴了多种编程语言的字符串插值特性。
STR 模板处理器
- 使用
STR
前缀和大括号{}
进行变量替换和逻辑表达式编写。 - 支持单行和多行模板。
示例代码
- 单行模板示例:
java">String fullName = STR."{firstName} {lastName}";
- 多行模板示例(JSON格式):
java">String json = STR."\"\"\" "name": "{firstName}", "phone": "{phone}", "address": "{address}" "\"\"\"";
FMT 处理器
- 类似于
STR
,但增加了格式化说明符,如%-12s
。
RAW 模式
- 生成
StringTemplate
对象,需要手动处理以获得最终字符串。
自定义模板处理器
- 通过实现
StringTemplate.Processor
接口自定义模板处理器。 - 示例:去除字符串中的空格。
自定义处理器示例
- 实现
process
方法,处理模板片段和值。
总结
- JDK21 的字符串模板功能是为了解决 Java 在字符串拼接方面的不足。
- 设计上借鉴了多种语言,提升了字符串操作的易用性。