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

7

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!

我得到的是一个编译错误,它说
非法的文本块开放定界符序列,缺少行终止符。
2个回答

14

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

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>

我觉得这非常不清楚,所以我不得不与社区分享。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接