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