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 模块名:**它执行相同的操作,但限制了哪些模块可以对包名中的私有成员进行反射访问。
广告