std.reflect 包
功能介绍
reflect
包提供了反射功能,使得程序在运行时能够获取到各种实例的类型信息,并进行各种读写和调用操作。
本包暂不支持 macOS 平台。
注意:
- 对于全局信息仓颉的反射功能只能访问公开的全局变量和全局函数。
- 对于当前所在包,仓颉的反射功能可以访问所有全局定义的类型,而对于外部导入的包或动态加载的模块,则只能访问其中公开的全局定义的类型。
- 对于成员信息仓颉的反射功能只能访问类型内的公开成员(实例/静态成员变量/属性/函数),使用非
public
修饰符修饰的或缺省修饰符的成员均是不可见的。- 目前,仓颉的反射功能尚不支持
Nothing
类型、函数类型、元组类型、enum
类型和带有泛型的struct
类型。
API 列表
函数
函数名 | 功能 |
---|---|
parseParameterTypes(String) | 将字符串转换为包含具体类型信息的函数签名,以便 getStaticFunction 等函数使用。 |
类
类名 | 功能 |
---|---|
TypeInfo | TypeInfo 提供了所有数据类型通用的操作接口,支持用户进行反射操作。 |
ClassTypeInfo | 描述class 类型的类型信息。 |
InterfaceTypeInfo | 描述interface 类型的类型信息。 |
PrimitiveTypeInfo | 描述原始数据类型的类型信息。 |
StructTypeInfo | 描述struct 类型的类型信息。 |
InfoList | 信息列表,用于保存只读的反射信息。 |
ConstructorInfo | 描述构造函数信息。 |
ParameterInfo | 描述函数形参信息。 |
InstanceFunctionInfo | 描述实例成员函数信息。 |
StaticFunctionInfo | 描述静态成员函数信息。 |
InstancePropertyInfo | 描述实例成员属性信息。 |
StaticPropertyInfo | 描述静态成员属性信息。 |
InstanceVariableInfo | 描述实例成员变量信息。 |
StaticVariableInfo | 描述静态成员变量信息。 |
ModuleInfo | 描述模块信息,提供了仓颉动态模块加载、缓存能力以及模块内包信息查询能力。 |
PackageInfo | 描述包信息。 |
GlobalFunctionInfo | 描述全局函数信息。 |
GlobalVariableInfo | 描述全局变量信息。 |
枚举
枚举名 | 功能 |
---|---|
ModifierInfo | 描述修饰符信息。 |
异常类
异常类名 | 功能 |
---|---|
ReflectException | ReflectException 为 Reflect 包的基异常类。 |
InfoNotFoundException | 表示无法找到对应信息异常。 |
MisMatchException | 表示调用对应函数抛出异常。 |
IllegalSetException | 表示对不可变类型进行更改异常。 |
IllegalTypeException | 表示类型不匹配异常。 |
InvocationTargetException | 表示调用函数包装异常。 |