如何在 Java 15 文本块功能中添加变量?

Rit*_*hik 5 java string java-15

刚刚在 Java 15 中遇到了一个新特性,即“文本块”。我可以假设一个变量可以通过与“+”运算符连接来添加到文本块中,如下所示:

String html = """
          <html>
              <body>
                  <p>Hello, """+strA+"""</p>
              </body>
          </html>
          """;
Run Code Online (Sandbox Code Playgroud)

但是他们是否提供了任何方式,以便我们可以以在许多其他语言中流行的方式添加变量,如下所示:

String html = """
          <html>
              <body>
                  <p>Hello, ${strA}</p>
              </body>
          </html>
          """;
Run Code Online (Sandbox Code Playgroud)

这个问题可能听起来很愚蠢,但在某些情况下可能很有用。

Ale*_*rov 12

Java 15 不支持直接在文本块内插入,也不支持纯字符串文字。

Java 15 中的解决方案是使用String.formatted()method

String html = """
      <html>
          <body>
              <p>Hello, %s</p>
          </body>
      </html>
      """.formatted(strA);
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 5

文本块的规范

文本块不直接支持字符串插值。在未来的 JEP 中可能会考虑插值。

“字符串插值”的含义

计算包含一个或多个占位符的字符串文字,产生一个结果,其中占位符被替换为其相应的值

来自维基百科


如上所述,也许我们将来会得到它。尽管很难说他们如何在不破坏向后兼容性的情况下实现它——${}例如,如果我的字符串包含,会发生什么?Java 语言设计者很少添加任何可能破坏向后兼容性的内容。

在我看来,他们最好要么立即支持,要么永远不支持。

也许可以使用一种新的文本块。例如""",它们可以'''用来表示参数化文本块,而不是分隔符。