如何在Java文本块中使用变量值的占位符

时间:2020-04-25 20:43:31

标签: java java-14 java-text-blocks

如何将变量放入Java文本块?
喜欢

"""
{
  ...
  "someKey": "someValue",
  "date": "${LocalDate.now()}",
  ...
}
"""

1 个答案:

答案 0 :(得分:7)

您可以在文本块中使用%s作为占位符

String str = """
{
...
"someKey": "someValue",
"date": %s,
...
}
"""

并使用format

替换
String.format(str,LocalDate.now());

来自jeps 355 docs

更清洁的替代方法是使用String :: replace或String :: format,如下所示:

String code = """
          public void print($type o) {
              System.out.println(Objects.toString(o));
          }
          """.replace("$type", type);

String code = String.format("""
          public void print(%s o) {
              System.out.println(Objects.toString(o));
          }
          """, type);

另一种替代方法是引入新的实例方法String :: formatted,该方法可以按以下方式使用:

String source = """
            public void print(%s object) {
                System.out.println(Objects.toString(object));
            }
            """.formatted(type);

注意:,但不推荐使用java-13文档String.formatted​的文档,建议使用String.format(this, args).

此方法与文本块(一种预览语言功能)相关联。将来的发行版中可能会更改或删除文本块和/或此方法。