- java.lang.Object
-
- java.lang.module.ModuleDescriptor
-
- 实现的所有接口
-
Comparable<ModuleDescriptor>
public class ModuleDescriptor extends Object implements Comparable<ModuleDescriptor>
模块描述符。模块描述符描述命名模块并定义获取其每个组件的方法。 通过调用
模块的getDescriptor方法获得Java虚拟机中命名模块的模块描述符。 模块描述符也可以使用ModuleDescriptor.Builder类创建,或者使用此处定义的read方法读取模块声明的二进制形式(module-info.class)。模块描述符描述正常 ,开放或自动模块。 普通模块和开放式模块描述他们
dependences,exported-packages,服务他们use或provide,和其他组件。 普通模块可能是open特定的包。 开放模块的模块描述符不声明任何打开的包(它的opens方法返回一个空集),但是当在Java虚拟机中实例化时,它被视为所有包都打开。 自动模块的模块描述符不声明任何依赖(除了对java.base的强制依赖),并且不声明任何导出或打开的包。 自动模块在分辨率期间接受特殊处理,以便它们读取配置中的所有其他模块。 当在Java虚拟机中实例化自动模块时,它会读取每个未命名的模块,并将其视为导出和打开所有包。ModuleDescriptor对象是不可变的,并且可供多个并发线程使用。- 从以下版本开始:
- 9
- 另请参见:
-
模块
-
-
嵌套类汇总
嵌套类 变量和类型 类 描述 static classModuleDescriptor.Builder用于构建ModuleDescriptor对象的构建器。static classModuleDescriptor.Exports由模块导出的包可能是合格的或不合格的。static classModuleDescriptor.Modifier模块上的修饰符。static classModuleDescriptor.Opens由模块打开的包可能是合格的或不合格的。static classModuleDescriptor.Provides模块提供的一个或多个实现的服务。static classModuleDescriptor.Requires依赖于模块static classModuleDescriptor.Version模块的版本字符串。
-
方法摘要
所有方法 静态方法 实例方法 具体的方法 变量和类型 方法 描述 intcompareTo(ModuleDescriptor that)将此模块描述符与另一个进行比较。booleanequals(Object ob)测试此模块描述符与给定对象的相等性。Set<ModuleDescriptor.Exports>输出()返回表示导出的包的输出对象的集合。inthashCode()计算此模块描述符的哈希码。booleanisAutomatic()如果这是一个自动模块,则返回true。booleanisOpen()如果这是一个打开的模块,则返回true。Optional<String>mainClass()返回模块主类。Set<ModuleDescriptor.Modifier>modifiers()返回模块修饰符集。Stringname()返回模块名称。static ModuleDescriptor.BuildernewAutomaticModule(String name)实例化构建器以构建自动模块的模块描述符。static ModuleDescriptor.BuildernewModule(String name)实例化构建器以构建 普通模块的模块描述符。static ModuleDescriptor.BuildernewModule(String name, Set<ModuleDescriptor.Modifier> ms)实例化构建器以构建模块描述符。static ModuleDescriptor.BuildernewOpenModule(String name)实例化构建器以为打开的模块构建模块描述符。Set<ModuleDescriptor.Opens>opens()返回表示打开包的Opens对象的集合。Set<String>包()返回模块中的包集。Set<ModuleDescriptor.Provides>提供者()返回表示模块提供的服务的提供者对象的集合。Optional<String>rawVersion()返回具有可能不可解析的模块版本的字符串static ModuleDescriptorread(InputStream in)从输入流中读取模块声明的二进制形式作为模块描述符。static ModuleDescriptorread(InputStream in, Supplier<Set<String>> packageFinder)从输入流中读取模块声明的二进制形式作为模块描述符。static ModuleDescriptorread(ByteBuffer bb)从字节缓冲区中读取模块声明的二进制形式作为模块描述符。static ModuleDescriptorread(ByteBuffer bb, Supplier<Set<String>> packageFinder)从字节缓冲区中读取模块声明的二进制形式作为模块描述符。Set<ModuleDescriptor.Requires>requires()返回表示模块依赖关系的Requires对象的集合。StringtoNameAndVersion()返回包含模块名称的字符串,如果存在,则返回其版本。StringtoString()返回描述模块的字符串。Set<String>uses()返回服务依赖集。Optional<ModuleDescriptor.Version>version()返回模块版本。
-
-
-
方法详细信息
-
name
public String name()
返回模块名称。
- 结果
- 模块名称
-
modifiers
public Set<ModuleDescriptor.Modifier> modifiers()
返回模块修饰符集。
- 结果
- 可能为空的不可修改的修饰符集
-
isOpen
public boolean isOpen()
- 结果
-
true如果这是一个开放模块
-
isAutomatic
public boolean isAutomatic()
- 结果
-
true如果这是一个自动模块
-
requires
public Set<ModuleDescriptor.Requires> requires()
返回表示模块依赖关系的
Requires对象的集合。当该模块未命名为“
java.base”时,该组包括对“java.base”的依赖性。 如果此模块是自动模块,则它不依赖于“java.base”以外的任何模块。- 结果
-
可能为空的不可修改的
ModuleDescriptor.Requires对象集
-
输出
public Set<ModuleDescriptor.Exports> exports()
返回表示导出的包的
输出对象的集合。如果此模块是自动模块,则导出集为空。
- 结果
- 可能为空的不可修改的导出包集
-
opens
public Set<ModuleDescriptor.Opens> opens()
返回表示打开包的
Opens对象的集合。如果此模块是打开模块或自动模块,则打开的包的集合为空。
- 结果
- 一个可能为空的不可修改的开放包
-
提供者
public Set<ModuleDescriptor.Provides> provides()
返回表示模块提供的服务的
提供者对象的集合。- 结果
- 此模块提供的可能为空的不可修改的服务集
-
version
public Optional<ModuleDescriptor.Version> version()
返回模块版本。
- 结果
-
此模块的版本,如果模块没有版本或版本,
则为空
Optional为 unparseable
-
rawVersion
public Optional<String> rawVersion()
返回具有可能不可解析的模块版本的字符串
- 结果
-
包含模块版本的字符串,如果模块没有版本,
Optional空Optional - 另请参见:
-
version()
-
toNameAndVersion
public String toNameAndVersion()
返回包含模块名称的字符串,如果存在,则返回其版本。
- 结果
- 包含模块名称的字符串,如果存在,则包含其版本
-
compareTo
public int compareTo(ModuleDescriptor that)
将此模块描述符与另一个进行比较。通过按字典顺序比较它们的模块名称来比较两个
ModuleDescriptor对象。 在模块名称相等的情况下,比较模块版本。 在比较模块版本时,具有版本的模块描述符被认为是接替没有版本的模块描述符。 如果两个版本都是unparseable,那么raw version strings将按字典顺序进行比较。 如果模块名称相同且版本相同(或两者中不存在),则比较修改器集。 通过比较为每组计算的二进制值来比较修改器组。 如果集合中存在修饰符,则其序号位置的位在二进制值中为1,否则为0。 如果两组修饰符也相等,equals与equals一致的方式比较模块描述符的其他组件。- Specified by:
-
compareTo在界面Comparable<ModuleDescriptor> - 参数
-
that- 要比较的模块描述符 - 结果
- 如果此模块描述符小于,等于或大于给定模块描述符,则为负整数,零或正整数
-
equals
public boolean equals(Object ob)
测试此模块描述符与给定对象的相等性。如果给定对象不是
ModuleDescriptor则此方法返回false。 如果它们的每个相应组件相等,则两个模块描述符相等。该方法满足
Object.equals方法的一般合同。- 重写:
-
equals在类Object - 参数
-
ob- 要与此对象进行比较的对象 - 结果
-
trueif且仅当给定对象是等于此模块描述符的模块描述符时 - 另请参见:
-
Object.hashCode(),HashMap
-
hashCode
public int hashCode()
计算此模块描述符的哈希码。哈希码基于模块描述符的组件,并满足
Object.hashCode方法的常规协定。- 重写:
-
hashCode在类Object - 结果
- 此模块描述符的哈希码值
- 另请参见:
-
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
newModule
public static ModuleDescriptor.Builder newModule(String name, Set<ModuleDescriptor.Modifier> ms)
实例化构建器以构建模块描述符。- 参数
-
name- 模块名称 -
ms- 模块修饰符集 - 结果
- 一个新的建设者
- 异常
-
IllegalArgumentException- 如果模块名称为null或者不是合法模块名称,或者修改器集包含AUTOMATIC和其他修饰符
-
newModule
public static ModuleDescriptor.Builder newModule(String name)
- 参数
-
name- 模块名称 - 结果
- 一个新的建设者
- 异常
-
IllegalArgumentException- 如果模块名称为null或不是合法的模块名称
-
newOpenModule
public static ModuleDescriptor.Builder newOpenModule(String name)
- 参数
-
name- 模块名称 - 结果
- 构建开放模块的新构建器
- 异常
-
IllegalArgumentException- 如果模块名称为null或者不是合法的模块名称
-
newAutomaticModule
public static ModuleDescriptor.Builder newAutomaticModule(String name)
- 参数
-
name- 模块名称 - 结果
- 构建自动模块的新构建器
- 异常
-
IllegalArgumentException- 如果模块名称为null或不是合法的模块名称 - 另请参见:
-
ModuleFinder.of(Path[])
-
read
public static ModuleDescriptor read(InputStream in, Supplier<Set<String>> packageFinder) throws IOException
从输入流中读取模块声明的二进制形式作为模块描述符。如果输入流中编码的描述符未指示模块中的一组包,则将调用
packageFinder。packageFinder返回的软件包集必须包括模块导出,打开的所有软件包,以及模块提供的服务实现的软件包,以及主类的软件包(如果模块具有主类) 。 如果packageFinder抛出UncheckedIOException则会重新抛出IOException因果。如果模块描述符后面有字节,那么它是否是特定于实现的,这些字节是读取,忽略还是报告为
InvalidModuleDescriptorException。 如果此方法因InvalidModuleDescriptorException或IOException失败,则可能在从输入流中读取了一些(但不是全部)字节后执行此操作。 强烈建议在发生异常时立即关闭并丢弃流。- API Note:
-
packageFinder参数用于从旧模块工件格式读取模块描述符时,这些格式不记录描述符本身中的包集。 - 参数
-
in- 输入流 -
packageFinder- 可以生成一组包的供应商 - 结果
- 模块描述符
- 异常
-
InvalidModuleDescriptorException- 如果检测到无效的模块描述符或packageFinder返回的包集不包含从模块描述符获取的所有包 -
IOException- 如果从输入流读取I / O错误或包装查找器抛出UncheckedIOException
-
read
public static ModuleDescriptor read(InputStream in) throws IOException
从输入流中读取模块声明的二进制形式作为模块描述符。 此方法完全按照2-argread方法的指定工作,但当从流中读取的模块描述符未指示包集时,不使用打包程序查找程序查找其他程序包。- 参数
-
in- 输入流 - 结果
- 模块描述符
- 异常
-
InvalidModuleDescriptorException- 如果检测到无效的模块描述符 -
IOException- 如果从输入流中读取I / O错误
-
read
public static ModuleDescriptor read(ByteBuffer bb, Supplier<Set<String>> packageFinder)
从字节缓冲区中读取模块声明的二进制形式作为模块描述符。如果在字节缓冲区中编码的描述符不指示模块中的一组包,则将调用
packageFinder。packageFinder返回的软件包集必须包括模块导出,打开的所有软件包,以及模块提供的服务实现的软件包,以及主类的软件包(如果模块具有主类) 。 如果packageFinder抛出UncheckedIOException则会重新抛出IOException原因。从索引
p开始从缓冲区读取模块描述符,其中p是调用此方法时的缓冲区position。 返回时,缓冲区的位置将等于p + n,其中n是从缓冲区读取的字节数。如果模块描述符后面有字节,那么它是否是特定于实现的,这些字节是读取,忽略还是报告为
InvalidModuleDescriptorException。 如果此方法使用InvalidModuleDescriptorException失败,则可能在读取了一些但不是全部字节后执行此操作。- API Note:
-
packageFinder参数用于从旧模块工件格式读取模块描述符时,这些格式不记录描述符本身中的包集。 - 参数
-
bb- 字节缓冲区 -
packageFinder- 可以生产一组包裹的供应商 - 结果
- 模块描述符
- 异常
-
InvalidModuleDescriptorException- 如果检测到无效的模块描述符,或者packageFinder返回的包的packageFinder不包括从模块描述符获取的所有包
-
read
public static ModuleDescriptor read(ByteBuffer bb)
从字节缓冲区中读取模块声明的二进制形式作为模块描述符。 此方法完全按照2-argread方法的指定工作,但在缓冲区中编码的模块描述符未指示包集时,不使用packager finder查找其他包。- 参数
-
bb- 字节缓冲区 - 结果
- 模块描述符
- 异常
-
InvalidModuleDescriptorException- 如果检测到无效的模块描述符
-
-