java.lang.Object
java.lang.module.ModuleDescriptor.Builder
- 封闭类:
ModuleDescriptor
用于构建
ModuleDescriptor 对象的构建器。
ModuleDescriptor 定义了 newModule 、 newOpenModule 和 newAutomaticModule 方法来创建用于构建 normal 、打开和自动模块的构建器。
当调用 exports 、opens 、packages 、provides 和 mainClass 方法时,模块中的包集由 Builder 累积。
作为构建器方法指定参数的模块名称、包名称和类名称是模块名称、包名称和类的限定名称(在命名包中),如在Java 语言规范.
用法示例:
ModuleDescriptor descriptor = ModuleDescriptor.newModule("stats.core")
.requires("java.base")
.exports("org.acme.stats.core.clustering")
.exports("org.acme.stats.core.regression")
.packages(Set.of("org.acme.stats.core.internal"))
.build();
- API 注意:
Builder在将组件添加到构建器时检查组件和不变量。这样做的理由是尽早检测错误,而不是将所有验证推迟到build方法。- 自从:
- 9
-
方法总结
修饰符和类型方法描述build()从其组件构建并返回一个ModuleDescriptor。添加导出的包。添加导出的包。添加导出的包。添加具有给定(可能为空)修饰符集的导出包。添加具有给定(可能为空)修饰符集的导出包。设置模块主类。添加一个打开的包。添加一个打开的包。添加一个打开的包。opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn) 添加具有给定(可能为空)修饰符集的打开包。添加具有给定(可能为空)修饰符集的打开包。将包添加到模块。提供具有一个或多个实现的服务。提供服务的实现。添加对模块的依赖。添加对具有空修饰符集的模块的依赖。添加对具有给定(可能为空)修饰符集的模块的依赖。requires(Set<ModuleDescriptor.Requires.Modifier> ms, String mn, ModuleDescriptor.Version compiledVersion) 添加对具有给定(可能为空)修饰符集的模块的依赖。添加服务依赖。设置模块版本。设置模块版本。
-
方法详情
-
requires
添加对模块的依赖。- 参数:
req- 依赖- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果依赖于此构建器初始化构建的模块IllegalStateException- 如果已经声明了对模块的依赖或者此构建器用于自动模块
-
requires
public ModuleDescriptor.Builder requires(Set <ModuleDescriptor.Requires.Modifier > ms, String mn, ModuleDescriptor.Version compiledVersion) 添加对具有给定(可能为空)修饰符集的模块的依赖。依赖包括编译时记录的模块版本。- 参数:
ms- 修饰符集mn- 模块名称compiledVersion- 编译时记录的模块版本- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果模块名称是null,则不是合法的模块名称,或者等于此构建器初始化构建的模块名称IllegalStateException- 如果已经声明了对模块的依赖或者此构建器用于自动模块
-
requires
添加对具有给定(可能为空)修饰符集的模块的依赖。- 参数:
ms- 修饰符集mn- 模块名称- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果模块名称是null,则不是合法的模块名称,或者等于此构建器初始化构建的模块名称IllegalStateException- 如果已经声明了对模块的依赖或者此构建器用于自动模块
-
requires
添加对具有空修饰符集的模块的依赖。- 参数:
mn- 模块名称- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果模块名称是null,则不是合法的模块名称,或者等于此构建器初始化构建的模块名称IllegalStateException- 如果已经声明了对模块的依赖或者此构建器用于自动模块
-
exports
添加导出的包。- 参数:
e- 出口- 返回:
- 这个建筑商
- 抛出:
IllegalStateException- 如果package已声明为已导出或此构建器用于自动模块
-
exports
public ModuleDescriptor.Builder exports(Set <ModuleDescriptor.Exports.Modifier > ms, String pn, Set <String > targets) 添加具有给定(可能为空)修饰符集的导出包。包被导出到一组目标模块。- 参数:
ms- 修饰符集pn- 包名targets- 目标模块名称集- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名称是null或不是合法的包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称IllegalStateException- 如果包已被声明为已导出或此构建器用于自动模块
-
exports
添加具有给定(可能为空)修饰符集的导出包。包被导出到所有模块。- 参数:
ms- 修饰符集pn- 包名- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名是null或者不是合法的包名IllegalStateException- 如果包已被声明为已导出或此构建器用于自动模块
-
exports
添加导出的包。包被导出到一组目标模块。- 参数:
pn- 包名targets- 目标模块名称集- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名称是null或不是合法的包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称IllegalStateException- 如果包已被声明为已导出或此构建器用于自动模块
-
exports
添加导出的包。包被导出到所有模块。- 参数:
pn- 包名- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名是null或者不是合法的包名IllegalStateException- 如果包已被声明为已导出或此构建器用于自动模块
-
opens
添加一个打开的包。- 参数:
obj-Opens对象- 返回:
- 这个建筑商
- 抛出:
IllegalStateException- 如果包已经声明为打开,或者这是一个打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(Set <ModuleDescriptor.Opens.Modifier > ms, String pn, Set <String > targets) 添加具有给定(可能为空)修饰符集的打开包。该包对一组目标模块开放。- 参数:
ms- 修饰符集pn- 包名targets- 目标模块名称集- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名称是null或不是合法的包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称IllegalStateException- 如果包已经声明为打开,或者这是一个打开模块或自动模块的构建器
-
opens
添加具有给定(可能为空)修饰符集的打开包。该包对所有模块开放。- 参数:
ms- 修饰符集pn- 包名- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名是null或者不是合法的包名IllegalStateException- 如果包已经声明为打开,或者这是一个打开模块或自动模块的构建器
-
opens
添加一个打开的包。该包对一组目标模块开放。- 参数:
pn- 包名targets- 目标模块名称集- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名称是null或不是合法的包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称IllegalStateException- 如果包已经声明为打开,或者这是一个打开模块或自动模块的构建器
-
opens
添加一个打开的包。该包对所有模块开放。- 参数:
pn- 包名- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果包名是null或者不是合法的包名IllegalStateException- 如果包已经声明为打开,或者这是一个打开模块或自动模块的构建器
-
uses
添加服务依赖。- 参数:
service- 服务类型- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果服务类型是null或者不是命名包中类的限定名称IllegalStateException- 如果已经声明了对服务类型的依赖或者这是自动模块的构建器
-
provides
提供具有一个或多个实现的服务。如果尚未添加,每个provider(或提供者工厂)的包将添加到模块中。- 参数:
p- 提供- 返回:
- 这个建筑商
- 抛出:
IllegalStateException- 如果服务类型的提供者已经声明
-
provides
提供服务的实现。如果尚未添加,则将每个提供者(或提供者工厂)的包添加到模块中。- 参数:
service- 服务类型providers- 提供者或提供者工厂类名称的列表- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果服务类型或任何提供者类名是null或不是命名包中类的限定名称,或者提供者类名列表为空IllegalStateException- 如果服务类型的提供者已经声明
-
packages
将包添加到模块。不在模块中的包名称集中的所有包都添加到模块中。- 参数:
pns-(可能为空)包名称集- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果任何包名称是null或者不是合法的包名称
-
version
设置模块版本。- 参数:
v- 版本- 返回:
- 这个建筑商
-
version
设置模块版本。- 参数:
vs- 要解析的版本字符串- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果vs是null或不能解析为版本字符串- 参见:
-
mainClass
设置模块主类。如果尚未添加,则将主类的包添加到模块中。也就是说,这个方法相当于先调用这个构建器的packages方法添加主类的包名。- 参数:
mc- 模块主类- 返回:
- 这个建筑商
- 抛出:
IllegalArgumentException- 如果mainClass是null或者不是命名包中类的限定名称
-
build
从其组件构建并返回一个ModuleDescriptor。该模块将需要“
java.base”,即使尚未声明相关性(例外情况是在构建名为“java.base”的模块时,因为它不能要求自己)。如果未声明依赖项,则对“java.base”的依赖项将具有MANDATED修饰符。- 返回:
- 模块描述符
-