module-info.java是Java 9新增的文件,它用来描述一个模块(Module),模块是一个可以被Java虚拟机(JVM)加载的程序包,它可以将程序包分组,以提高程序的安全性和管理性。
module-info.java的结构
module-info.java文件是一个普通的Java源文件,它包含一个模块声明,模块声明是用module关键字定义的,它由模块名称、模块依赖、模块导出、模块开放以及模块服务等部分组成:
module <模块名称> {
requires <模块依赖>;
exports <模块导出>;
opens <模块开放>;
uses <模块服务>;
provides <模块提供> with <模块实现>;
}
模块声明
模块声明是一个模块的定义,它由一个module关键字和一个模块名称组成,模块名称是一个标识符,它必须与模块的文件夹名称相同,模块声明可以有0个或多个模块指令:
module <模块名称> {
<模块指令>;
...
}
模块依赖
模块依赖是指当前模块依赖其他模块,它由一个requires关键字和一个模块名称组成,模块依赖可以有0个或多个:
module <模块名称> {
requires <模块依赖1>;
requires <模块依赖2>;
...
}
模块导出
模块导出是指将当前模块中的某些包导出给其他模块使用,它由一个exports关键字和一个包名称组成,模块导出可以有0个或多个:
module <模块名称> {
exports <包1>;
exports <包2>;
...
}
模块开放
模块开放是指将当前模块中的某些包开放给其他模块使用,它由一个opens关键字和一个包名称组成,模块开放可以有0个或多个:
module <模块名称> {
opens <包1>;
opens <包2>;
...
}
模块服务
模块服务是指当前模块中的某些接口可以被其他模块使用,它由一个uses关键字和一个接口名称组成,模块服务可以有0个或多个:
module <模块名称> {
uses <接口1>;
uses <接口2>;
...
}
模块提供
模块提供是指当前模块中的某些类可以被其他模块使用,它由一个provides关键字和一个类名称组成,模块提供可以有0个或多个:
module <模块名称> {
provides <类1> with <类实现1>;
provides <类2> with <类实现2>;
...
}
使用方法
在模块中创建一个module-info.java文件,在文件中定义模块的名称、依赖、导出、开放、服务和提供,编译模块,即可将模块加载到JVM中。
@861ppt