std.reflect 包

功能介绍

reflect 包提供了反射功能,使得程序在运行时能够获取到各种实例的类型信息,并进行各种读写和调用操作。

本包暂不支持 macOS 平台。

注意:

  • 对于全局信息仓颉的反射功能只能访问公开的全局变量和全局函数。
  • 对于当前所在包,仓颉的反射功能可以访问所有全局定义的类型,而对于外部导入的包或动态加载的模块,则只能访问其中公开的全局定义的类型。
  • 对于成员信息仓颉的反射功能只能访问类型内的公开成员(实例/静态成员变量/属性/函数),使用非 public 修饰符修饰的或缺省修饰符的成员均是不可见的。
  • 目前,仓颉的反射功能尚不支持 Nothing 类型、函数类型、元组类型、enum 类型和带有泛型的 struct 类型。

API 列表

函数

函数名功能
parseParameterTypes(String)将字符串转换为包含具体类型信息的函数签名,以便 getStaticFunction 等函数使用。

类

类名功能
TypeInfoTypeInfo提供了所有数据类型通用的操作接口,支持用户进行反射操作。
ClassTypeInfo描述class类型的类型信息。
InterfaceTypeInfo描述interface类型的类型信息。
PrimitiveTypeInfo描述原始数据类型的类型信息。
StructTypeInfo描述struct类型的类型信息。
InfoList信息列表,用于保存只读的反射信息。
ConstructorInfo描述构造函数信息。
ParameterInfo描述函数形参信息。
InstanceFunctionInfo描述实例成员函数信息。
StaticFunctionInfo描述静态成员函数信息。
InstancePropertyInfo描述实例成员属性信息。
StaticPropertyInfo描述静态成员属性信息。
InstanceVariableInfo描述实例成员变量信息。
StaticVariableInfo描述静态成员变量信息。
ModuleInfo描述模块信息,提供了仓颉动态模块加载、缓存能力以及模块内包信息查询能力。
PackageInfo描述包信息。
GlobalFunctionInfo描述全局函数信息。
GlobalVariableInfo描述全局变量信息。

枚举

枚举名功能
ModifierInfo描述修饰符信息。

异常类

异常类名功能
ReflectExceptionReflectException 为 Reflect 包的基异常类。
InfoNotFoundException表示无法找到对应信息异常。
MisMatchException表示调用对应函数抛出异常。
IllegalSetException表示对不可变类型进行更改异常。
IllegalTypeException表示类型不匹配异常。
InvocationTargetException表示调用函数包装异常。