- 所有父级接口:
ConstantDesc
,TypeDescriptor
,TypeDescriptor.OfField<ClassDesc>
名义描述符 代表
Class
常量。
对于常见的系统类型,包括所有原始类型,在 ConstantDescs
中有预定义的 ClassDesc 常量。 (java.lang.constant
API 将 void
视为基本类型。)要为类或接口类型创建 ClassDesc,请使用 of(java.lang.String)
或 ofDescriptor(String)
;要为数组类型创建 ClassDesc,请使用 ofDescriptor(String)
,或首先为组件类型获取 ClassDesc,然后调用 arrayType()
或 arrayType(int)
方法。
- 自从:
- 12
- 参见:
-
内部类总结
在接口 java.lang.invoke.TypeDescriptor 中声明的嵌套类/接口
TypeDescriptor.OfField<F extends TypeDescriptor.OfField<F>>, TypeDescriptor.OfMethod<F extends TypeDescriptor.OfField<F>,
M extends TypeDescriptor.OfMethod<F, M>> -
方法总结
修饰符和类型方法描述default ClassDesc
default ClassDesc
arrayType
(int rank) default ClassDesc
返回此 ClassDesc 的组件类型,如果它描述数组类型,否则返回null
。返回此类型的字段类型描述符字符串default String
返回此描述符描述的类型的人类可读名称。boolean
比较指定对象与此描述符是否相等。default boolean
isArray()
返回此 ClassDesc 是否描述数组类型。default boolean
返回此 ClassDesc 是否描述类或接口类型。default boolean
返回此 ClassDesc 是否描述原始类型。default ClassDesc
default ClassDesc
static ClassDesc
返回类或接口类型的 ClassDesc,给定类或接口的名称,例如"java.lang.String"
。static ClassDesc
给定类或接口的包名称和非限定(简单)名称,返回类或接口类型的 ClassDesc。static ClassDesc
ofDescriptor
(String descriptor) 给定类、接口、数组或原始类型的描述符字符串,返回 ClassDesc。static ClassDesc
ofInternalName
(String name) 返回类或接口类型的 ClassDesc,给出内部形式的类或接口的名称,例如"java/lang/String"
。default String
返回这个 ClassDesc 的包名,如果它描述了一个类或接口类型。在接口 java.lang.constant.ConstantDesc 中声明的方法
resolveConstantDesc
-
方法详情
-
of
返回类或接口类型的 ClassDesc,给定类或接口的名称,例如"java.lang.String"
。 (要为数组类型创建描述符,请使用ofDescriptor(String)
或arrayType()
;要为基本类型创建描述符,请使用ofDescriptor(String)
或使用ConstantDescs
中的预定义常量)。- 参数:
name
- 完全限定(点分隔)二进制类名- 返回:
- ClassDesc 描述所需的类
- 抛出:
NullPointerException
- 如果参数是null
IllegalArgumentException
- 如果名称字符串的格式不正确- 参见:
-
ofInternalName
返回类或接口类型的 ClassDesc,给出内部形式的类或接口的名称,例如"java/lang/String"
。- API 注意:
-
要为数组类型创建描述符,请使用
ofDescriptor(String)
或arrayType()
;要为原始类型创建描述符,请使用ofDescriptor(String)
或使用ConstantDescs
中的预定义常量。 - 参数:
name
- 完全限定的类名,采用内部(斜杠分隔)形式- 返回:
- ClassDesc 描述所需的类
- 抛出:
NullPointerException
- 如果参数是null
IllegalArgumentException
- 如果名称字符串的格式不正确- 看Java 虚拟机规范:
-
4.2.1 二进制类和接口名称
- 自从:
- 20
- 参见:
-
of
给定类或接口的包名称和非限定(简单)名称,返回类或接口类型的 ClassDesc。- 参数:
packageName
- 包名(点分隔);如果包名是空字符串,则该类被认为在未命名的包中className
- 不合格(简单)类名- 返回:
- ClassDesc 描述所需的类
- 抛出:
NullPointerException
- 如果任何参数是null
IllegalArgumentException
- 如果包名或类名的格式不正确
-
ofDescriptor
给定类、接口、数组或原始类型的描述符字符串,返回 ClassDesc。- API 注意:
-
非数组类型的字段类型描述符字符串是对应于基本类型 (
"J", "I", "C", "S", "B", "D", "F", "Z", "V"
) 的单字母代码,或者是字母"L"
,后跟类的完全限定二进制名称,然后是";"
。数组类型的字段类型描述符是字符"["
后跟组件类型的字段描述符。有效类型描述符字符串的示例包括"Ljava/lang/String;"
、"I"
、"[I"
、"V"
、"[Ljava/lang/String;"
等。有关详细信息,请参阅 JVMS 4.3.2 (“字段描述符”)。 - 参数:
descriptor
- 字段描述符字符串- 返回:
- ClassDesc 描述所需的类
- 抛出:
NullPointerException
- 如果参数是null
IllegalArgumentException
- 如果名称字符串的格式不正确- 看Java 虚拟机规范:
-
4.3.2 字段描述符
4.4.1 CONSTANT_Class_info结构
- 参见:
-
arrayType
- 指定者:
arrayType
在接口TypeDescriptor.OfField<ClassDesc>
中- 返回:
- ClassDesc 描述数组类型
- 抛出:
IllegalStateException
- 如果生成的 ClassDesc 的数组等级大于 255- 看Java 虚拟机规范:
-
4.4.1 CONSTANT_Class_info结构
-
arrayType
- 参数:
rank
- 数组的秩- 返回:
- ClassDesc 描述数组类型
- 抛出:
IllegalArgumentException
- 如果等级小于或等于零,或者结果数组类型的等级大于 255- 看Java 虚拟机规范:
-
4.4.1 CONSTANT_Class_info结构
-
nested
- API 注意:
-
示例:如果描述符
d
描述类java.util.Map
,则类java.util.Map.Entry
的描述符可以通过d.nested("Entry")
获得。 - 参数:
nestedName
- 嵌套类的非限定名称- 返回:
- 一个 ClassDesc 描述嵌套类
- 抛出:
NullPointerException
- 如果参数是null
IllegalStateException
- 如果这个 ClassDesc 没有描述类或接口类型IllegalArgumentException
- 如果嵌套类名无效
-
nested
- 参数:
firstNestedName
- 第一层嵌套类的非限定名称moreNestedNames
- 嵌套类剩余级别的非限定名称- 返回:
- 一个 ClassDesc 描述嵌套类
- 抛出:
NullPointerException
- 如果任何参数或其内容是null
IllegalStateException
- 如果这个 ClassDesc 没有描述类或接口类型IllegalArgumentException
- 如果嵌套类名无效
-
isArray
default boolean isArray()返回此 ClassDesc 是否描述数组类型。- 指定者:
isArray
在接口TypeDescriptor.OfField<ClassDesc>
中- 返回:
- 这个ClassDesc是否描述了一个数组类型
-
isPrimitive
default boolean isPrimitive()返回此 ClassDesc 是否描述原始类型。- 指定者:
isPrimitive
在接口TypeDescriptor.OfField<ClassDesc>
中- 返回:
- 这个ClassDesc是否描述了原始类型
-
isClassOrInterface
default boolean isClassOrInterface()返回此 ClassDesc 是否描述类或接口类型。- 返回:
- 这个 ClassDesc 描述的是类还是接口类型
-
componentType
返回此 ClassDesc 的组件类型,如果它描述数组类型,否则返回null
。- 指定者:
componentType
在接口TypeDescriptor.OfField<ClassDesc>
中- 返回:
-
一个 ClassDesc 描述组件类型,或者
null
如果这个描述符没有描述一个数组类型
-
packageName
返回这个 ClassDesc 的包名,如果它描述了一个类或接口类型。- 返回:
- 包名,如果类在默认包中,则为空字符串,或者这个 ClassDesc 没有描述类或接口类型
-
displayName
返回此描述符描述的类型的人类可读名称。- 实现要求:
-
默认实现返回基本类型的简单名称(例如
int
),类或接口类型的非限定类名,或组件类型的显示名称后缀适当数量的[]
对数组类型。 - 返回:
- 人类可读的名字
-
descriptorString
String descriptorString()返回此类型的字段类型描述符字符串- 指定者:
descriptorString
在接口TypeDescriptor
中- 返回:
- 描述符字符串
- 看Java 虚拟机规范:
-
4.3.2 字段描述符
-
equals
比较指定对象与此描述符是否相等。返回true
当且仅当指定对象也是 ClassDesc 并且两者描述相同的类型。
-