- java.lang.Object
-
- java.lang.module.ModuleDescriptor.Builder
-
- Enclosing class:
- ModuleDescriptor
public static final class ModuleDescriptor.Builder extends Object
用于构建ModuleDescriptor
对象的构建器。ModuleDescriptor
定义newModule
,newOpenModule
,和newAutomaticModule
方法用于构建正常 ,打开和自动模块创建助洗剂。这组模块中封装的由累积
Builder
为输出
,opens
,包
,提供者
和mainClass
点被调用的方法。作为构建器方法指定的参数的模块名称,包名称和类名称是The Java™ Language Specification中定义的类(在命名包中)的模块名称,包名称和限定名称。
用法示例:
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 Note:
-
当组件添加到构建器时,
Builder
检查组件和不变量。 其基本原理是尽早检测错误,而不是将所有验证推迟到build
方法。 - 从以下版本开始:
- 9
-
-
方法摘要
-
-
-
方法详细信息
-
requires
public ModuleDescriptor.Builder requires(ModuleDescriptor.Requires req)
添加对模块的依赖。- 参数
-
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
public ModuleDescriptor.Builder requires(Set<ModuleDescriptor.Requires.Modifier> ms, String mn)
使用给定(可能为空)的修饰符集添加对模块的依赖性。- 参数
-
ms
- 修改器集 -
mn
- 模块名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果模块名称为null
,则不是合法的模块名称,或者等于此构建器初始化为构建的模块名称 -
IllegalStateException
- 如果已声明对模块的依赖性,或者此构建器用于自动模块
-
requires
public ModuleDescriptor.Builder requires(String mn)
使用一组空修饰符添加对模块的依赖性。- 参数
-
mn
- 模块名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果模块名称为null
,则不是合法的模块名称,或者等于此构建器初始化为构建的模块名称 -
IllegalStateException
- 如果已声明对模块的依赖性,或者此构建器用于自动模块
-
输出
public ModuleDescriptor.Builder exports(ModuleDescriptor.Exports e)
添加导出的包。- 参数
-
e
- 出口 - 结果
- 这个建设者
- 异常
-
IllegalStateException
- 如果package
已声明为已导出或此构建器用于自动模块
-
输出
public ModuleDescriptor.Builder exports(Set<ModuleDescriptor.Exports.Modifier> ms, String pn, Set<String> targets)
添加具有给定(可能为空)修饰符集的导出包。 包将导出到一组目标模块。- 参数
-
ms
- 修饰符集 -
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果程序包名称为null
或者不是合法程序包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称 -
IllegalStateException
- 如果包已声明为已导出,或此构建器用于自动模块
-
输出
public ModuleDescriptor.Builder exports(Set<ModuleDescriptor.Exports.Modifier> ms, String pn)
添加具有给定(可能为空)修饰符集的导出包。 包将导出到所有模块。- 参数
-
ms
- 修饰符集 -
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名称为null
或不是合法包名称 -
IllegalStateException
- 如果包已声明为已导出,或此构建器用于自动模块
-
输出
public ModuleDescriptor.Builder exports(String pn, Set<String> targets)
添加导出的包。 包将导出到一组目标模块。- 参数
-
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果程序包名称为null
或者不是合法程序包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称 -
IllegalStateException
- 如果包已声明为已导出,或此构建器用于自动模块
-
输出
public ModuleDescriptor.Builder exports(String pn)
添加导出的包。 包将导出到所有模块。- 参数
-
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名称是null
或不是合法包名称 -
IllegalStateException
- 如果包已声明为已导出,或此构建器用于自动模块
-
opens
public ModuleDescriptor.Builder opens(ModuleDescriptor.Opens obj)
添加一个打开的包。- 参数
-
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
public ModuleDescriptor.Builder opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn)
添加一个包含给定(可能为空)修饰符的打开包。 该包对所有模块开放。- 参数
-
ms
- 修饰符集 -
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名称为null
或不是合法包名称 -
IllegalStateException
- 如果包已声明为已打开,或者这是打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(String pn, Set<String> targets)
添加一个打开的包。 该包对一组目标模块开放。- 参数
-
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果程序包名称为null
或者不是合法程序包名称,则目标模块集为空,或者目标模块集包含的名称不是合法的模块名称 -
IllegalStateException
- 如果包已声明为已打开,或者这是打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(String pn)
添加一个打开的包。 该包对所有模块开放。- 参数
-
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名称是null
或者不是合法的包名称 -
IllegalStateException
- 如果包已声明为已打开,或者这是打开模块或自动模块的构建器
-
uses
public ModuleDescriptor.Builder uses(String service)
添加服务依赖性。- 参数
-
service
- 服务类型 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果服务类型是null
或者不是命名包中类的限定名称 -
IllegalStateException
- 如果已声明对服务类型的依赖关系,或者这是自动模块的构建器
-
提供者
public ModuleDescriptor.Builder provides(ModuleDescriptor.Provides p)
提供具有一个或多个实现的服务。 如果尚未添加,则将每个provider
(或提供商工厂)的包添加到模块中。- 参数
-
p
- 提供 - 结果
- 这个建设者
- 异常
-
IllegalStateException
- 如果已声明服务类型的提供者
-
提供者
public ModuleDescriptor.Builder provides(String service, List<String> providers)
提供服务的实现。 如果尚未添加,则将每个提供程序(或提供程序工厂)的程序包添加到模块中。- 参数
-
service
- 服务类型 -
providers
- 提供者或提供者工厂类名称列表 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果服务类型或任何提供程序类名称是null
或者不是命名包中类的限定名称,或者提供程序类名称列表为空 -
IllegalStateException
- 如果已声明服务类型的提供程序
-
包
public ModuleDescriptor.Builder packages(Set<String> pns)
将包添加到模块。 不在模块中的软件包名称集中的所有软件包都将添加到模块中。- 参数
-
pns
- (可能为空)包名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果任何软件包名称为null
或不是合法软件包名称
-
version
public ModuleDescriptor.Builder version(ModuleDescriptor.Version v)
设置模块版本。- 参数
-
v
- 版本 - 结果
- 这个建设者
-
version
public ModuleDescriptor.Builder version(String vs)
设置模块版本。- 参数
-
vs
- 要解析的版本字符串 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果vs
是null
或者无法解析为版本字符串 - 另请参见:
-
ModuleDescriptor.Version.parse(String)
-
mainClass
public ModuleDescriptor.Builder mainClass(String mc)
- 参数
-
mc
- 模块主类 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果mainClass
是null
或者不是命名包中类的限定名称
-
build
public ModuleDescriptor build()
从其组件构建并返回ModuleDescriptor
。即使尚未声明依赖性,该模块也将需要“
java.base
”(例外情况是构建名为“java.base
”的模块,因为它不能自行处理)。 如果未声明依赖关系,对“java.base
”的依赖将具有MANDATED
修饰符。- 结果
- 模块描述符
-
-