【问题标题】:Java 7 - Multiline stringsJava 7 - 多行字符串
【发布时间】:2011-06-02 15:40:32
【问题描述】:

我已经阅读了多行字符串文字被提议在 Java 7 中添加。

虽然我找不到任何文件可以肯定地说他们曾经是。我想知道它们是否是,因为我会考虑为此切换版本。

【问题讨论】:

标签: java java-7 multilinestring


【解决方案1】:

多行字符串文字不会添加到 JDK 7。您可以查看 Project Coin 的 homepage 以获取语言更改列表。

但是,您可以使用 Scala,它确实支持使用三引号的多行字符串文字:

var s = """Hello
      World"""

【讨论】:

  • 因为它也针对JVM。
  • @Mike 我认为 Scala 在语言设计方面是 Java 的“进化”,尽管它仍然受到 JVM/CLR 的一般设计的束缚,但它并没有受到 Java 早期版本的阻碍“OOP”范式。 (例如,Scala 之于 Java 就像 C#5.0+ 之于 C#1.0 :-)
  • 在这种情况下,scala 的问题是在一个地方失去了所有源和文件的简单性,这是 heredocs 的胜利。
  • 这当然是原始问题的主题,但我建议 Groovy 现在是 Java 的演变,它支持使用三个双引号或单引号的多行字符串。
  • 好吧,既然我们在这个问题上展开了讨论,我想说 Kotlin 在这方面做得很好。
【解决方案2】:

Java 中没有添加多行字符串(即使是最新版本的 Java 8),并且可能永远不会添加到 Java 中。但是,您可以像这样将多个字符串添加在一起:

String greeting = "Hello " + 
    "world! " + 
    "This is a multiline string.";

或者,如果您希望多行换行符实际上开始一个新行,请在每行的末尾插入“\n”。

【讨论】:

  • 你明白 multiline 指的是源代码,而不是渲染的版本吗?
  • @ThomasJungblut 对不起。我一定是误会了。我将编辑我的答案。
【解决方案3】:

遵循 Java 的编码约定字符串应该像这样连接起来:

String str = "Long text line " 
             + "more long text.";

确保+ 运算符始终从下一行开始以提高可读性。
见:Code Conventions for the Java Programming Language: 4. Indentation

【讨论】:

    【解决方案4】:

    从 JDK 13 开始,Java 支持多行字符串。它们被称为 text blocks

    String html = """
              <html>
                  <body>
                      <p>Hello, world</p>
                  </body>
              </html>
              """;
    

    注意,这是preview feature。但我希望它会成为下一个版本(JDK 14-15)中的一个永久功能。

    【讨论】:

    • 它是 Java 15 的官方版本!
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多