6

Java 13 即将到来,所以我开始研究它的新特性,其中之一就是文本块

我写了一个简单的程序

public final class Example {
    public static void main(String[] args) {
        final String greeting = """Hello
        It's me, Andrew!""";
        System.out.println(greeting);
    }
}

我期待看到

Hello
It's me, Andrew!

我得到的是一个编译错误说

非法文本块打开分隔符序列,缺少行终止符

4

2 回答 2

8

文本块的上下文必须从新行开始。

public final class Example {
    public static void main(String[] args) {
        final String greeting = """
            Hello
            It's me, Andrew!""";
        System.out.println(greeting);
    }
}

印刷

Hello
It's me, Andrew!

JEP 355的摘录:文本块(预览版) :

文本块由零个或多个内容字符组成,由开始和结束分隔符括起来。

开始分隔符是三个双引号字符 ( """) 后跟零个或多个空格后跟行终止符的序列。内容从开始分隔符的行终止符之后的第一个字符开始。

不过,您不一定要在内容的末尾添加行终止符。

结束分隔符是三个双引号字符的序列。内容在结束分隔符的第一个双引号之前的最后一个字符处结束。

final String greeting = """
    Hello
    It's me, Andrew!
    """;

意味着

Hello
It's me, Andrew!
<an empty line here>

我发现它非常不清楚,所以我不得不与社区分享。

于 2019-09-09T11:35:31.477 回答
0

作为记录,此处给出了决定不允许之后立即允许内容的理由"""

这样做的原因是文本块主要设计用于支持多行字符串,并且要求初始行终止符简化了缩进处理规则

于 2021-04-22T15:07:05.363 回答