一直以来,Java 语言中并没有很好的方式在代码中直接添加多行的字符串常量。
一种常见的做法是使用字符串连接。每一个字符串表示一行,需要手动添加换行符。字符串连接的问题在于很难维护。尤其是需要对双引号进行转义。在有些格式中,比如 YAML,白字符的位置会对语义产生影响。在使用字符串连接时,很难有效确保格式的正确性。
public class StringTemplate {
public String generate(User user) {
return "<user>\n"
+ " <id>" + user.id() + "</id>\n"
+ " <name>" + user.name() + "</name>\n"
+ " <email>" + user.email() + "</email>\n"
+ "</user>";
}
}
另外一种做法是把多行字符串保存在文件中,在运行时读取。这种做法需要额外的代码来实现。
在其他主流语言都支持了文本块的情况下,Java 终于提供了相应的支持。文本块在 Java 12 中以预览功能的形式引入,在 Java 13 中再次预览,在 Java 14 中成为正式功能。