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

一个模块 是代码的组织类的形式收集封装 和静态资源,如财产 的文件 或他人。它为外部环境提供了使用该模块所需的所有信息。该模块 描述符 是的主要来源模块 系统,它的编制在一个名为“文件中指定一个模块声明的版本module-info.java在模块的目录层次结构的根”文件。

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

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

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

  • 模块模块。名称: 声明一个名为module.name的模块。

  • 需要模块。名称: 指定我们的模块取决于该模块。名称,允许该模块访问目标模块中导出的公共类型。

  • 需要一个传递模块。名称: 任何依赖于此模块的模块都将自动依赖于module.name。

  • export pkg.name: 表示我们的模块将pkg.name包中的公共成员导出到需要此模块的每个模块。

  • 将pkg.name导出到module.name:与上面相同,但是限制了哪些模块可以使用pkg.name包中的公共成员。

  • 使用类。名称: 使当前模块成为服务类名的使用者。

  • 为class.name提供class.name.impl: 它将class.name.impl类注册为提供class.name服务实现的服务。

  • 打开pkg.name:它允许其他模块使用反射来访问包pkg.name的私有成员。

  • 打开pkg.name到module.name:这样做,但是限制了哪些模块可以对pkg.name中的私有成员进行反射访问。