java.lang.Object
java.lang.module.ModuleDescriptor.Builder
- 封装类:
-
ModuleDescriptor
用于构建
ModuleDescriptor
对象的构建器。
ModuleDescriptor
定义了newModule
、newOpenModule
和newAutomaticModule
方法,用于创建构建普通、开放和自动模块的构建器。
模块中的包集由Builder
在调用exports
、opens
、packages
、provides
和mainClass
方法时累积。
传递给构建器方法的模块名称、包名称和类名称是根据《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
方法。 - 自JDK版本:
- 9
-
Method Summary
Modifier and TypeMethodDescriptionbuild()
构建并返回一个ModuleDescriptor
对象。添加一个导出的包。添加一个导出的包。添加一个导出的包。添加一个带有给定(可能为空)修饰符集的导出包。添加一个带有给定(可能为空)修饰符集的导出包。设置模块的主类。添加一个开放的包。添加一个开放的包。添加一个开放的包。opens
(Set<ModuleDescriptor.Opens.Modifier> ms, String pn) 添加一个带有给定(可能为空)修饰符集的开放包。添加一个带有给定(可能为空)修饰符集的开放包。向模块添加包。提供一个或多个实现的服务。提供服务的实现。添加对模块的依赖。添加对模块的依赖,带有空的修饰符集。添加对模块的依赖,带有给定(可能为空)修饰符集。requires
(Set<ModuleDescriptor.Requires.Modifier> ms, String mn, ModuleDescriptor.Version compiledVersion) 添加对模块的依赖,带有给定(可能为空)修饰符集。添加服务依赖。设置模块版本。设置模块版本。
-
Method Details
-
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
修饰符。- 返回:
- 模块描述符
-