- 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
为exports
,opens
,packages
,provides
,并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:
-
A
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
- 如果已经声明对模块的依赖,或者该构建器用于自动模块
-
exports
public ModuleDescriptor.Builder exports(ModuleDescriptor.Exports e)
添加导出的包。- 参数
-
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
public ModuleDescriptor.Builder exports(Set<ModuleDescriptor.Exports.Modifier> ms, String pn)
使用给定(可能为空)的修饰符集添加导出的包。 软件包导出到所有模块。- 参数
-
ms
- 一组修饰符 -
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名是null
或不是合法的包名称 -
IllegalStateException
- 如果程序包已经声明为导出,或此构建器用于自动模块
-
exports
public ModuleDescriptor.Builder exports(String pn, Set<String> targets)
添加导出的包。 软件包导出到一组目标模块。- 参数
-
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果软件包名称为null
或不是合法的软件包名称,那么目标模块的集合为空,或者目标模块集合包含不是合法模块名称的名称 -
IllegalStateException
- 如果软件包已被声明为导出,或此构建器用于自动模块
-
exports
public ModuleDescriptor.Builder exports(String pn)
添加导出的包。 软件包导出到所有模块。- 参数
-
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名是null
或不是合法的包名称 -
IllegalStateException
- 如果包已经声明为导出,或此构建器用于自动模块
-
opens
public ModuleDescriptor.Builder opens(ModuleDescriptor.Opens obj)
添加一个开放的包。- 参数
-
obj
-Opens
对象 - 结果
- 这个建设者
- 异常
-
IllegalStateException
- 如果程序包已经声明为open,或者是打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn, Set<String> targets)
添加一个带有给定(可能为空)的修饰符集的开放包。 该软件包对一组目标模块开放。- 参数
-
ms
- 一组修饰符 -
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果软件包名称为null
或不是合法软件包名称,那么目标模块集合为空,或者目标模块集合包含不是合法模块名称的名称 -
IllegalStateException
- 如果程序包已经声明为open,或者是打开的模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(Set<ModuleDescriptor.Opens.Modifier> ms, String pn)
添加一个带有给定(可能为空)的修饰符集的开放包。 该软件包对所有模块都可用。- 参数
-
ms
- 一组修饰符 -
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名是null
或不是合法的包名称 -
IllegalStateException
- 如果程序包已经声明为open,或者是打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(String pn, Set<String> targets)
添加一个开放的包。 该软件包对一组目标模块开放。- 参数
-
pn
- 包名称 -
targets
- 目标模块名称集 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果软件包名称为null
或不是合法的软件包名称,那么目标模块的集合为空,或者目标模块集合包含不是合法模块名称的名称 -
IllegalStateException
- 如果程序包已经声明为open,或者是打开模块或自动模块的构建器
-
opens
public ModuleDescriptor.Builder opens(String pn)
添加一个开放的包。 该软件包对所有模块都可用。- 参数
-
pn
- 包名称 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果包名是null
或不是合法的包名称 -
IllegalStateException
- 如果程序包已经声明为open,或者是打开模块或自动模块的构建器
-
uses
public ModuleDescriptor.Builder uses(String service)
增加服务依赖性。- 参数
-
service
- 服务类型 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果服务类型为null
或不是命名包中的类的限定名称 -
IllegalStateException
- 如果已经声明对服务类型的依赖,或者这是自动模块的构建器
-
provides
public ModuleDescriptor.Builder provides(ModuleDescriptor.Provides p)
为一个或多个实现提供服务。 如果尚未添加,则每个provider
(或提供者工厂)的包将被添加到模块中。- 参数
-
p
- 提供 - 结果
- 这个建设者
- 异常
-
IllegalStateException
- 如果服务类型的提供者已经被声明
-
provides
public ModuleDescriptor.Builder provides(String service, List<String> providers)
提供服务的实现。 如果还没有添加,每个提供者(或提供者工厂)的包将被添加到模块中。- 参数
-
service
- 服务类型 -
providers
- 提供者或提供者工厂类名的列表 - 结果
- 这个建设者
- 异常
-
IllegalArgumentException
- 如果服务类型或任何提供者类名称是null
或者不是命名包中的类的限定名称,或者提供者类名称列表为空 -
IllegalStateException
- 如果服务类型的提供者已经被声明
-
packages
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
修饰符。- 结果
- 模块描述符
-
-