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 | 表示调用函数包装异常。 |