Java文本块

在OpenJDK 琥珀色规范专家邮件列表上的2019年5月13日发布的“ RFR:多行字符串文字(预览)JEP [EG草案] ,吉姆·拉斯基宣布了一项名为“ 文本块(预览) ”的功能JEP 草案。 JDK-8222530 )。

Laskey的帖子用(我已经添加了链接),“有的打开后显著调整重新开放的JEP审查”,他指的是在收盘后/开始的撤回JEP草案JEP 326 [“ 原始字符串字面量 (预览)”]( JDK-8196004 )。 Laskey解释了对JEP草案的最新更改,“最重要的更改是重命名为Text Blocks(我相信它会随着时间推移而演变为Text Literals或只是Texts。)这主要是为了反映JEP的二维性。新文字,而字符串文字是一维的。” 此“ 原始字符串文字 ”后的JEP草案以前称为“ 多行字符串文字 ”,现在称为“ 文本块”

JEP草案“ 文本块(预览) ”提供了建议的预览功能的详细概述。 其“摘要”部分指出:

文本块添加到Java语言。 文本块是多行字符串文字,它避免了大多数转义序列的需要,以可预测的方式自动设置字符串的格式,并在需要时使开发人员可以控制格式。 这将是预览语言功能

这是对JEP 326 Raw String Literals(预览)中开始的探索的后续工作。

JEP草案目前列出了JEP的两个“目标”,我在这里转载了前两个:

  1. “通过简化表示跨越几行源代码的字符串的工作,简化了编写Java程序的任务,同时避免了常见情况下的转义序列。”
  2. “增强Java程序中表示用非Java语言编写的代码的字符串的可读性。”

JEP草案中的“非目标”也很有趣,此处复制了两个当前的非目标:

  1. “为任何新构造所表示的字符串定义新的引用类型(与java.lang.String不同)不是目标。”
  2. “定义采用String操作数的新运算符(不同于+ )不是目标。”

JEP草案的当前“说明”规定:

文本块是Java语言中一种新型的文字。 它可以在任何可以使用字符串文字的地方表示一个字符串 ,但是可以提供更高的表现力和更少的意外复杂性。

文本块由零个或多个内容字符组成,并由打开和关闭定界符括起来。

JEP草案描述了在开头定界符和结束定界符中使用“ 胖定界符 ”(“三个双引号字符”: === ),以标记“文本块”的开头和结尾。 如当前所建议的,文本块实际上是在具有开头定界符(可能包含空格)的行的行终止符之后的行上开始的。 文本块的内容以结束定界符之前的最后一个字符结尾。

JEP草案描述了一些特殊字符的“文本块”处理。 它指出,“内容可以直接包含"字符,与字符串文字中的字符不同。 它还指出在文本块中“ \"和“ \n是“允许的,但不是必需的或不建议的”。 JEP草案的一部分显示了“格式错误的文本块”的示例。

JEP草案涵盖了许多实施细节。 其中包括行终止符的“编译时处理”(“ 归一化 ”为“ LF( \u000A ”)),附带的空白(“ 附带的空白必需空白 ”的区别)以及String::indent用于自定义缩进管理)和转义序列(根据Java语言规范并使用String::translateEscapes进行自定义转义处理, “对内容中的任何转义序列进行解释”)。

新命名的“ Java文本块”看起来非常适合于既定的目标,当前的提案是大量工程工作的结果。 JEP草案很平易近人,值得我在这里未涵盖的许多细节进行阅读。 由于这仍然是JEP草案,因此尚未提议将其作为候选JEP,并且尚未针对任何特定的Java版本。

翻译自: https://www.javacodegeeks.com/2019/05/java-text-blocks.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值