Java 9 模块中的模块描述符的重要性?


一个**模块**是以**包**的形式组织的代码集合,以及静态资源,例如**属性文件**或其他文件。它向外部环境提供使用该模块所需的所有信息。**模块描述符**是**模块**系统的一个关键组成部分,它是名为“**module-info.java**”的文件中指定的模块声明的编译版本,该文件位于模块目录层次结构的根目录下。

模块通过以下模块声明来描述自身

module com.myproject.module1 {
   requires com.myproject.module2;
   exports com.myproject.project1;
   exports com.myproject.project2;
}

以下是描述的一些模块描述符

  • **module 模块名:**声明一个名为模块名的模块。
  • **requires 模块名:**指定我们的模块依赖于模块名,允许此模块访问目标模块中导出的公共类型。
  • **requires transitive 模块名:**任何依赖于此模块的模块都会自动依赖于模块名。
  • **exports 包名:**它表示我们的模块为每个需要此模块的模块导出包名中的公共成员。
  • **exports 包名 to 模块名:**与上面相同,但限制了哪些模块可以使用包名中的公共成员。
  • **uses 类名:**它使当前模块成为类名的服务使用者。
  • **provides 类名 with 类名.实现:**它将类名.实现类注册为提供类名服务实现的服务。
  • **opens 包名:**它允许其他模块使用反射来访问包名中的私有成员。
  • **opens 包名 to 模块名:**它执行相同的操作,但限制了哪些模块可以对包名中的私有成员进行反射访问。

更新于: 2020年3月26日

656 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告