Java 9最大的功能之一是Project Jigsaw定义的模块系统。当从JavaOne 2015 的Project Jigsaw:The Hood中读取幻灯片时,我注意到以下源代码:
// src/java.sql/module-info.java module java.sql { exports java.sql; exports javax.sql; exports javax.transaction.xa; }
对我而言,有趣的是文件结尾,.java并且似乎使用了两个新关键字:module和exports。Java 9将引入哪些其他关键字?向后兼容性(即名为的函数或变量module)将如何处理?
.java
module
exports
Java SE 9 Edition Java语言规范的第3.9节总结了在Java 9中为模块声明添加的关键字:
进一步的十个字符的序列是受限制的关键字:open, module,requires,transitive,exports,opens,to,uses, provides,和with。这些字符序列仅在ModuleDeclaration和ModuleDirective生成(第7.7节)中作为终端出现时才被标记为关键字。为了与Java SE 9之前编写的程序兼容,它们在其他任何地方都被标记为标识符。有一个例外:在ModuleDirective生产中,字符序列的右边紧随其后的要求是,可传递的字符序列被标记为关键字,除非它是然后是分隔符,在这种情况下,它被标记为标识符。
open
requires
transitive
opens
to
uses
provides
with
如果您当前有一个名为的方法module,或此处列出的任何其他关键字,它将继续编译。
(view并且permits是早期Jigsaw原型中的关键字,但很早以前就已经简化了它们的存在。)
view
permits