本周Java世界上最大的新闻可能是JDK 11的通用性。 但是,另一个令人兴奋的发展是JDK 12 Early Access Build 12的发布 ( 2018年9月20日 )。 JDK 12的这个早期访问生成12是显著,因为它包括与实施方式中JEP 326 [“原始字符串(预览)”]通过变更如变更51713:d424675a9743 ( JDK-8206981 ), 变更51714:975d3636a2f9 ( JDK-8200434 )和变更集51725:ccea318862ae ( JDK-8210674 )。
JEP 326本身显示了多个示例,说明在常见情况下(文件路径,多行,正则表达式,数据库/ SQL和多语言)如何在Java代码中应用原始字符串文字。 这些示例还以可能更具可读性的格式出现在相关的JDK-8196004中 。 可以将这些“原始字符串文字”示例粘贴到Java类/方法中,并针对JDK 12 Early Access Build 12进行成功编译。为了方便起见,我将这些版本的略微修改的版本放在GitHub上的单个Java类中 。
请注意, JEP 326是“ 预览功能 ”,因此您必须使用javac
选项--enable-preview
和--release 12
编译,否则您将遇到错误消息“错误:原始字符串文字是预览功能,并且默认情况下处于禁用状态”,并使用指向用来分隔原始字符串文字的反引号的指针。 同样,该代码必须与java
启动器选项--enable-preview
一起运行才能成功运行,并避免出现错误消息:“…UnsupportedClassVersionError:未启用预览功能……”
据我所知,Early Access Build 12不包含JDK-8202442 [“ String :: unescape”]的实现。 添加到String
类的一些与原始字符串文字相关的库方法是JDK 11的一部分,我在“ 应用新的JDK 11字符串方法 ”一文中讨论了其中的一些方法 。
翻译自: https://www.javacodegeeks.com/2018/09/raw-string-literals-support-in-jdk-12-early-access-build-12.html