class ClassTypeInfo

public class ClassTypeInfo <: TypeInfo

功能:描述 class 类型的类型信息。

父类型:

prop constructors

public prop constructors: Collection<ConstructorInfo>

功能:获取该 ClassTypeInfo 对应的 class 的所有公开构造函数信息,返回对应集合。

注意:

  • 如果该 class 类型无任何公开构造函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<ConstructorInfo>

prop instanceVariables

public prop instanceVariables: Collection<InstanceVariableInfo>

功能:获取该 ClassTypeInfo 对应的 class 的所有公开实例成员变量信息,返回对应集合。

注意:

  • 如果该 class 类型无任何公开实例成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 该集合不包含任何继承而来的公开实例成员变量。

类型:Collection<InstanceVariableInfo>

prop sealedSubclasses

public prop sealedSubclasses: Collection<ClassTypeInfo>

功能:如果该 ClassTypeInfo 对应的 class 类型拥有 sealed 语义,则获取该 class 类型所在包内的所有子类的类型信息,返回对应集合。

注意:

  • 如果该 class 类型不拥有 sealed 语义,则返回空集合。
  • 如果该 class 类型拥有 sealed 语义,那么获得的集合必不可能是空集合,因为该 class 类型本身就是自己的子类。

类型:Collection<ClassTypeInfo>

prop staticVariables

public prop staticVariables: Collection<StaticVariableInfo>

功能:获取该 ClassTypeInfo 对应的 class 的所有公开静态成员变量信息,返回对应集合。

注意:

  • 如果该 class 类型无任何公开静态成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 该集合不包含任何继承而来的公开静态成员变量。

类型:Collection<StaticVariableInfo>

prop superClass

public prop superClass: Option<ClassTypeInfo>

功能:获取该 class 类型信息所对应的 class 类型的直接父类。

注意:

理论上只有 class Object 没有直接父类。

类型:Option<ClassTypeInfo>

func construct(Array<Any>)

public func construct(args: Array<Any>): Any

功能:在该 ClassTypeInfo 对应的 class 类型中根据实参列表搜索匹配的构造函数并调用,传入实参列表,返回调用结果。

参数:

返回值:

  • Any - 该 class 类型的实例。

异常:

func getConstructor(Array<TypeInfo>)

public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo

功能:尝试在该 ClassTypeInfo 对应的 class 类型中获取与给定形参类型信息列表匹配的公开构造函数的信息。

参数:

返回值:

  • ConstructorInfo - 如果成功匹配则返回该公开构造函数的信息。

异常:

func getInstanceVariable(String)

public func getInstanceVariable(name: String): InstanceVariableInfo

功能:给定变量名称,尝试获取该 ClassTypeInfo 所对应的 class 类型中匹配的实例成员变量的信息。

参数:

  • name: String - 变量名称。

返回值:

异常:

func getStaticVariable(String)

public func getStaticVariable(name: String): StaticVariableInfo

功能:给定变量名称,尝试获取该 ClassTypeInfo 所对应的 class 类型中匹配的静态成员变量的信息。

参数:

  • name: String - 变量名称。

返回值:

异常:

func isAbstract()

public func isAbstract(): Bool

功能:判断该 ClassTypeInfo 对应的 class 类型是否是抽象类。

返回值:

  • Bool - 如果该 ClassTypeInfo 对应的 class 类型是抽象类则返回 true,否则返回 false

func isOpen()

public func isOpen(): Bool

功能:判断该 ClassTypeInfo 对应的 class 类型是否拥有 open 语义。

注意:

并不是只有被 open 修饰符所修饰的 class 类型定义才拥有 open 语义,如: abstract class 无论是否被 open 修饰符修饰都会拥有 open 语义。

返回值:

  • Bool - 如果该 ClassTypeInfo 对应的 class 类型拥有 open 语义则返回 true,否则返回 false

func isSealed()

public func isSealed(): Bool

功能:判断该 ClassTypeInfo 对应的 class 类型是否拥有 sealed 语义。

返回值:

  • Bool - 如果该 ClassTypeInfo 对应的 class 类型拥有 sealed 语义则返回 true,否则返回 false

class ConstructorInfo

public class ConstructorInfo <: Equatable<ConstructorInfo> & Hashable & ToString

功能:描述构造函数信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 ConstructorInfo 对应的构造函数的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该构造函数信息所对应的构造函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop parameters

public prop parameters: InfoList<ParameterInfo>

功能:获取该 ConstructorInfo 所对应的构造函数的形参类型列表。

类型:InfoList<ParameterInfo>

func apply(Array<Any>)

public func apply(args: Array<Any>): Any

功能:调用该 ConstructorInfo 对应的构造函数,传入实参列表,并返回调用结果。

注意:

  • 目前,实参不支持 struct 类型的实例。
  • 目前,struct 类型中定义的构造函数不支持被调用。

参数:

返回值:

  • Any - 由该构造函数构造得到的类型实例。

异常:

  • InvocationTargetException - 如果该构造函数信息所对应的构造函数所属的类型是抽象类,则会抛出异常。
  • IllegalArgumentException - 如果实参列表 args 中的实参的数目与该构造函数信息所对应的构造函数的形参列表中的形参的数目不等,则抛出异常。
  • IllegalTypeException - 如果实参列表 args 中的任何一个实参的运行时类型不是该构造函数信息所对应的构造函数的对应形参的声明类型的子类型,则抛出异常。
  • Exception - 如果被调用的构造函数信息所对应的构造函数内部抛出异常,则该异常将被封装为 Exception 异常并抛出。

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 ConstructorInfo 对应的构造函数且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func hashCode()

public func hashCode(): Int64

功能:获取该构造器信息的哈希值。

返回值:

  • Int64 - 该构造器信息的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该构造函数信息。

返回值:

  • String - 字符串形式的该构造函数信息。

operator func !=(ConstructorInfo)

public operator func !=(that: ConstructorInfo): Bool

功能:判断该构造器信息与给定的另一个构造器信息是否不等。

参数:

返回值:

  • Bool - 如果该构造器信息与 that 不等则返回 true,否则返回 false

operator func ==(ConstructorInfo)

public operator func ==(that: ConstructorInfo): Bool

功能:判断该构造器信息与给定的另一个构造器信息是否相等。

参数:

返回值:

  • Bool - 如果该构造器信息与 that 相等则返回 true,否则返回 false

class GlobalFunctionInfo

public class GlobalFunctionInfo <: Equatable<GlobalFunctionInfo> & Hashable & ToString

功能:描述全局函数信息。

父类型:

prop name

public prop name: String

功能:获取该 GlobalFunctionInfo 对应的全局函数的名称。

注意:

构成重载的所有全局函数将拥有相同的名称。

类型:String

prop parameters

public prop parameters: InfoList<ParameterInfo>

功能:获取该 GlobalFunctionInfo 对应的全局函数的形参信息列表。

类型:InfoList<ParameterInfo>

prop returnType

public prop returnType: TypeInfo

功能:获取该 GlobalFunctionInfo 对应的全局函数的返回类型的类型信息。

类型:TypeInfo

func apply(Array<Any>)

public func apply(args: Array<Any>): Any

功能:调用该 GlobalFunctionInfo 对应的全局函数,传入实参列表,返回调用结果。

注意:

目前,实参不支持 struct 类型的实例。

参数:

返回值:

  • Any - 该全局函数的调用结果。

异常:

  • IllegalArgumentException - 如果实参列表 args 中的实参的数目与该全局函数信息所对应的全局函数的形参列表中的形参的数目不等,则抛出异常。
  • IllegalTypeException - 如果实参列表 args 中的任何一个实参的运行时类型不是该全局函数信息所对应的全局函数的对应形参的声明类型的子类型,则抛出异常。
  • Exception - 如果被调用的全局函数信息所对应全局函数内部抛出异常,则该异常将被封装为 Exception 异常并抛出。

func hashCode()

public func hashCode(): Int64

功能:获取该全局函数信息的哈希值。

返回值:

  • Int64 - 该全局函数信息的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该全局函数信息。

返回值:

  • String - 字符串形式的该全局函数信息。

operator func ==(GlobalFunctionInfo)

public operator func ==(that: GlobalFunctionInfo): Bool

功能:判断该全局函数信息与给定的另一个全局函数信息是否相等。

参数:

返回值:

  • Bool - 如果该全局函数信息与 that 相等则返回 true,否则返回 false

operator func !=(GlobalFunctionInfo)

public operator func !=(that: GlobalFunctionInfo): Bool

功能:判断该全局函数信息与给定的另一个全局函数信息是否不等。

参数:

返回值:

  • Bool - 如果该全局函数信息与 that 不等则返回 true,否则返回 false

class GlobalVariableInfo

public class GlobalVariableInfo <: Equatable<GlobalVariableInfo> & Hashable & ToString

功能:描述全局变量信息。

父类型:

prop name

public prop name: String

功能:获取该 GlobalVariableInfo 对应的全局变量的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 GlobalVariableInfo 对应的全局变量的声明类型的类型信息。

类型:TypeInfo

func getValue()

public func getValue(): Any

功能:获取该 GlobalVariableInfo 对应的全局变量的值。

返回值:

  • Any - 该全局变量的值。

func hashCode()

public func hashCode(): Int64

功能:获取该全局变量信息的哈希值。

返回值:

  • Int64 - 该全局变量信息的哈希值。

func isMutable()

public func isMutable(): Bool

功能:判断该 GlobalVariableInfo 对应的全局变量是否可修改。

注意:

  • 如果实例成员变量被 var 修饰符所修饰,则该全局变量可被修改。
  • 如果实例成员变量被 let 修饰符所修饰,则该全局变量不可被修改。
  • 任何类型为 struct 的全局变量均不可修改。

返回值:

  • Bool - 如果该全局变量可被修改则返回 true ,否则返回 false

func setValue(Any)

public func setValue(newValue: Any): Unit

功能:设置该 GlobalVariableInfo 对应的全局变量的值。

参数:

  • newValue: Any - 新的值。

异常:

  • IllegalSetException - 如果该全局变量信息所对应的全局变量不可修改,则抛出异常。
  • IllegalTypeException - 如果新值 newValue 的运行时类型不是全局变量信息所对应的全局变量的声明类型的子类型,则抛出异常。

func toString()

public func toString(): String

功能:获取字符串形式的该全局变量信息。

返回值:

  • String - 字符串形式的该全局变量信息。

operator func ==(GlobalVariableInfo)

public operator func ==(that: GlobalVariableInfo): Bool

功能:判断该全局变量信息与给定的另一个全局变量信息是否相等。

参数:

返回值:

  • Bool - 如果该全局变量信息与 that 相等则返回 true,否则返回 false

operator func !=(GlobalVariableInfo)

public operator func !=(that: GlobalVariableInfo): Bool

功能:判断该全局变量信息与给定的另一个全局变量信息是否不等。

参数:

返回值:

  • Bool - 如果该全局变量信息与 that 不等则返回 true,否则返回 false

class InfoList

public class InfoList<T> <: Collection<T>

功能:信息列表,用于保存只读的反射信息。

父类型:

prop size

public prop size: Int64

功能:获取该信息列表中的元素个数。

类型:Int64

func get(Int64)

public func get(index: Int64): ?T

功能:尝试获取该信息列表指定位置上的元素。

参数:

  • index: Int64 - 位置索引。

返回值:

  • ?T - 该信息列表指定位置上的元素。

func isEmpty()

public func isEmpty(): Bool

功能:判断该信息列表是否为空。

返回值:

  • Bool - 如果该信息列表为空则返回 true,否则返回 false

func iterator()

public func iterator(): Iterator<T>

功能:获取该信息列表的迭代器。

返回值:

  • Iterator<T> - 该信息列表的迭代器。

operator func [](Int64)

public operator func [](index: Int64): T

功能:获取该信息列表指定位置上的元素。

参数:

  • index: Int64 - 位置索引。

返回值:

  • T - 该信息列表指定位置上的元素。

异常:

class InstanceFunctionInfo

public class InstanceFunctionInfo <: Equatable<InstanceFunctionInfo> & Hashable & ToString

功能:描述实例成员函数信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 InstanceFunctionInfo 对应的实例成员函数的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该实例成员函数信息所对应的实例成员函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 InstanceFunctionInfo 对应的实例成员函数所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该实例成员函数无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 InstanceFunctionInfo 对应的实例成员函数的名称。

注意:

  • 构成重载的所有实例成员函数将拥有相同的名称。
  • 操作符重载函数的名称就是该操作符本身的符号内容,如"+","*","[]"。

类型:String

prop parameters

public prop parameters: InfoList<ParameterInfo>

功能:获取该 InstanceFunctionInfo 对应的实例成员函数的形参信息列表。

类型:InfoList<ParameterInfo>

prop returnType

public prop returnType: TypeInfo

功能:获取该 InstanceFunctionInfo 对应的实例成员函数的返回值类型的类型信息。

类型:TypeInfo

func apply(Any, Array<Any>)

public func apply(instance: Any, args: Array<Any>): Any

功能:调用该 InstanceFunctionInfo 对应实例成员函数,指定实例并传入实参列表,返回调用结果。

注意:

  • 目前,实例 instance 不支持 struct 类型的实例。
  • 目前,实参不支持 struct 类型的实例。

参数:

  • instance: Any - 实例。
  • args: Array<Any> - 实参列表。

返回值:

  • Any - 该实例成员函数的调用结果。

异常:

  • InvocationTargetException - 如果该实例成员函数信息所对应的实例成员函数是抽象的,则抛出异常。
  • IllegalTypeException - 如果实例 instance 的运行时类型与该实例成员函数信息所对应的实例成员函数所属的类型不严格相同,则抛出异常。
  • IllegalArgumentException - 如果实参列表 args 中的实参的数目与该实例成员函数信息所对应的实例成员函数的形参列表中的形参的数目不等,则抛出异常。
  • IllegalTypeException - 如果实参列表 args 中的任何一个实参的运行时类型不是该实例成员函数信息所对应的实例成员函数的对应形参的声明类型的子类型,则抛出异常。
  • Exception - 如果被调用的实例成员函数信息所对应的实例成员函数内部抛出异常,则该异常将被封装为 Exception 异常并抛出。

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 InstanceFunctionInfo 对应的实例成员函数且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func hashCode()

public func hashCode(): Int64

功能:获取该实例成员函数信息的哈希值。

返回值:

  • Int64 - 该实例成员函数信息的哈希值。

func isAbstract()

public func isAbstract(): Bool

功能:判断 InstanceFunctionInfo 所对应的实例成员函数是否拥有 abstract 语义。

返回值:

  • Bool - 如果该实例成员函数拥有 abstract 语义则返回 true,否则返回 false

func isOpen()

public func isOpen(): Bool

功能:判断该 InstanceFunctionInfo 对应的实例成员函数是否拥有 open 语义。

返回值:

  • Bool - 如果该实例成员函数拥有 open 语义则返回 true,否则返回 false

注意:

interface 类型中的实例成员函数默认均拥有 open 语义。

func toString()

public func toString(): String

功能:获取字符串形式的该实例成员函数信息。

返回值:

  • String - 字符串形式的该实例成员函数信息。

operator func ==(InstanceFunctionInfo)

public operator func ==(that: InstanceFunctionInfo): Bool

功能:判断该实例成员函数信息与给定的另一个实例成员函数信息是否相等。

参数:

返回值:

  • Bool - 如果该实例成员函数信息与 that 相等则返回 true,否则返回 false

operator func !=(InstanceFunctionInfo)

public operator func !=(that: InstanceFunctionInfo): Bool

功能:判断该实例成员函数信息与给定的另一个实例成员函数信息是否不等。

参数:

返回值:

  • Bool - 如果该实例成员函数信息与 that 不等则返回 true,否则返回 false

class InstancePropertyInfo

public class InstancePropertyInfo <: Equatable<InstancePropertyInfo> & Hashable & ToString

功能:描述实例成员属性信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 InstancePropertyInfo 对应的实例成员属性的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该实例成员属性信息所对应的实例成员属性,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 InstancePropertyInfo 对应的实例成员属性所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该实例成员属性无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 InstancePropertyInfo 对应的实例成员属性的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 InstancePropertyInfo 对应的实例成员属性的声明类型的类型信息。

类型:TypeInfo

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 InstancePropertyInfo 对应的实例成员属性且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func getValue(Any)

public func getValue(instance: Any): Any

功能:获取该 InstancePropertyInfo 对应的实例成员属性在给定实例中的值。

注意:

目前,实例 instance 不支持 struct 类型的实例。

参数:

  • instance: Any - 实例。

返回值:

  • Any - 该实例成员属性在实例 instance 中的值。

异常:

  • IllegalTypeException - 如果实例 instance 的运行时类型与该实例成员属性信息所对应的实例成员属性所属的类型不严格相同,则抛出异常。

func hashCode()

public func hashCode(): Int64

功能:获取该实例成员属性信息的哈希值。

返回值:

  • Int64 - 该实例成员属性信息的哈希值。

func isMutable()

public func isMutable(): Bool

功能:判断该 InstancePropertyInfo 对应的实例成员属性是否可修改。

注意:

  • 如果实例成员属性被 mut 修饰符所修饰,则该实例成员属性可被修改,否则不可被修改。
  • 任何 struct 类型的实例的任何实例成员属性均不可修改。
  • 任何类型为 struct 的实例成员属性均不可修改。

返回值:

  • Bool - 如果该实例成员属性信息所对应的实例成员属性可被修改则返回 true ,否则返回 false

func setValue(Any, Any)

public func setValue(instance: Any, newValue: Any): Unit

功能:设置该 InstancePropertyInfo 对应的实例成员属性在给定实例中的值。

注意:

目前,实例 instance 不支持 struct 类型的实例。

参数:

  • instance: Any - 实例。
  • newValue: Any - 新值。

异常:

  • IllegalSetException - 如果该实例成员属性信息所对应的实例成员属性不可修改,则抛出异常。
  • IllegalTypeException - 如果实例 instance 的运行时类型与该实例成员属性信息所对应的实例成员属性所属的类型不严格相同,则抛出异常。
  • IllegalTypeException - 如果新值 newValue 的运行时类型不是该实例成员属性信息所对应的实例成员属性的声明类型的子类型,则抛出异常。

func toString()

public func toString(): String

功能:获取字符串形式的该实例成员属性信息。

返回值:

  • String - 字符串形式的该实例成员属性信息。

operator func !=(InstancePropertyInfo)

public operator func !=(that: InstancePropertyInfo): Bool

功能:判断该实例成员属性信息与给定的另一个实例成员属性信息是否不等。

参数:

返回值:

  • Bool - 如果该实例成员属性信息与 that 不等则返回 true,否则返回 false

operator func ==(InstancePropertyInfo)

public operator func ==(that: InstancePropertyInfo): Bool

功能:判断该实例成员属性信息与给定的另一个实例成员属性信息是否相等。

参数:

返回值:

  • Bool - 如果该实例成员属性信息与 that 相等则返回 true,否则返回 false

class InstanceVariableInfo

public class InstanceVariableInfo <: Equatable<InstanceVariableInfo> & Hashable & ToString

功能:描述实例成员变量信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 InstanceVariableInfo 对应的实例成员变量的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该实例成员变量信息所对应的实例成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 InstanceVariableInfo 对应的实例成员变量所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该实例成员变量无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 InstanceVariableInfo 对应的实例成员变量的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 InstanceVariableInfo 对应的实例成员变量的声明类型的类型信息。

类型:TypeInfo

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 InstanceVariableInfo 对应的实例成员变量且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func getValue(Any)

public func getValue(instance: Any): Any

功能:获取该 InstanceVariableInfo 对应的实例成员变量在给定实例中的值。

注意:

  • 目前,实例 instance 不支持 struct 类型的实例。
  • 目前,返回值不支持为 struct 类型的实例。

参数:

  • instance: Any - 实例。

返回值:

  • Any - 该实例成员变量在实例 instance 中的值。

异常:

  • IllegalTypeException - 如果实例 instance 的运行时类型与该实例成员变量信息所对应的实例成员变量所属的类型不严格相同,则抛出异常。

func hashCode()

public func hashCode(): Int64

功能:获取该实例成员变量信息的哈希值。

返回值:

  • Int64 - 该实例成员变量信息的哈希值。

func isMutable()

public func isMutable(): Bool

功能:判断该 InstanceVariableInfo 对应的实例成员变量是否可修改。

注意:

  • 如果实例成员变量被 var 修饰符所修饰,则该实例成员变量可被修改。
  • 如果实例成员变量被 let 修饰符所修饰,则该实例成员变量不可被修改。
  • 任何 struct 类型的实例的任何实例成员变量均不可修改。
  • 任何类型为 struct 的实例成员变量均不可修改。

返回值:

  • Bool - 如果该实例成员变量信息所对应的实例成员变量可被修改则返回 true ,否则返回 false

func setValue(Any, Any)

public func setValue(instance: Any, newValue: Any): Unit

功能:设置该 InstanceVariableInfo 对应的实例成员变量在给定实例中的值。

注意:

目前,实例 instance 不支持 struct 类型的实例。

参数:

  • instance: Any - 实例。
  • newValue: Any - 新值。

异常:

  • IllegalSetException - 如果该实例成员变量信息所对应的实例成员变量不可修改,则抛出异常。
  • IllegalTypeException - 如果实例 instance 的运行时类型与该实例成员变量信息所对应的实例成员变量所属的类型不严格相同,则抛出异常。
  • IllegalTypeException - 如果新值 newValue 的运行时类型不是该实例成员变量信息所对应的实例成员变量的声明类型的子类型,则抛出异常。

func toString()

public func toString(): String

功能:获取字符串形式的该实例成员变量信息。

返回值:

  • String - 字符串形式的该实例成员变量信息。

operator func ==(InstanceVariableInfo)

public operator func ==(that: InstanceVariableInfo): Bool

功能:判断该实例成员变量信息与给定的另一个实例成员变量信息是否相等。

参数:

返回值:

  • Bool - 如果该实例成员变量信息与 that 相等则返回 true,否则返回 false

operator func !=(InstanceVariableInfo)

public operator func !=(that: InstanceVariableInfo): Bool

功能:判断该实例成员变量信息与给定的另一个实例成员变量信息是否不等。

参数:

返回值:

  • Bool - 如果该实例成员变量信息与 that 不等则返回 true,否则返回 false

class InterfaceTypeInfo

public class InterfaceTypeInfo <: TypeInfo

功能:interface 类型的类型信息。

父类型:

prop sealedSubtypes

public prop sealedSubtypes: Collection<TypeInfo>

功能:如果该 InterfaceTypeInfo 所对应的 interface 类型拥有 sealed 语义,则获取该 interface 类型所在包内的所有子类型的类型信息,返回对应集合。

注意:

  • 如果该 interface 类型不拥有 sealed 语义,则返回空集合。
  • 如果该 interface 类型拥有 sealed 语义,那么获得的集合必不可能是空集合,因为该 interface 类型本身就是自己的子类型。

类型:Collection<TypeInfo>

func isSealed()

public func isSealed(): Bool

功能:判断该 InterfaceTypeInfo 所对应的 interface 类型是否拥有 sealed 语义。

返回值:

  • Bool - 如果该 interface 类型拥有 sealed 语义则返回 true,否则返回 false

class ModuleInfo

public class ModuleInfo <: Equatable<ModuleInfo> & Hashable & ToString

功能:描述模块信息,提供了仓颉动态模块加载、缓存能力以及模块内包信息查询能力。

仓颉动态模块是仓颉编译器生成的一种特殊二进制文件,这种文件可以被外部的仓颉程序在运行时被加载与使用。

仓颉动态库模块在不同操作系统中以共享库(.so 文件)、动态链接库(.dll 文件)等文件形式存在。

注意:

任一模块下不允许包含拥有相同限定名称的包。

父类型:

prop name

public prop name: String

功能:获取该 ModuleInfo 对应的模块的名称。

注意:

  • 模块的名称由被加载的模块的文件名决定,该文件名的格式为 lib<module_name>_<package_name>(.<package_name>)*
  • <module_name><package_name> 均不允许为空。
  • 由于当前实现的局限性,<module_name> 中如果包含下划线 "_" 字符,可能出现非预期的加载错误。

类型:String

prop packages

public prop packages: Collection<PackageInfo>

功能:获取该模块中包含的所有包。

类型:Collection<PackageInfo>

prop version

public prop version: String

功能:获取该 ModuleInfo 对应的模块的版本号。

注意:

由于目前动态库中尚无版本信息,获取到的版本号总是 1.0

类型:String

static func find(String)

public static func find(moduleName: String): Option<ModuleInfo>

功能:尝试在所有已加载的仓颉动态库模块中获取与给定模块名称匹配的模块的信息。

参数:

  • moduleName: String - 仓颉动态库模块名称。

返回值:

  • Option<ModuleInfo> - 如果匹配成功则返回该模块的信息,否则返回 None

static func load(String)

public static func load(path: String): ModuleInfo

功能:运行时动态加载指定路径下的一个仓颉动态库模块并获得该模块的信息。

注意:

  • 为了提升兼容性,路径 path 中的共享库文件名不需要后缀名(如 .so.dll 等)。
  • 由于当前实现局限性,具有相同模块名称的动态库不能被同时加载,否则将抛出异常。如 m/am/a.bm/a.c 这三个包所对应的共享库的加载是互斥的。

参数:

  • path: String - 共享库文件的绝对路径或相对路径。

异常:

func getPackageInfo(String)

public func getPackageInfo(packageName: String): PackageInfo

功能:尝试在该 ModuleInfo 对应的模块中获取与给定包的名称或限定名称匹配的包的信息。

参数:

  • packageName: String - 包的名称或限定名称。

返回值:

  • PackageInfo - 如果匹配成功则返回该包的信息。

异常:

func hashCode()

public func hashCode(): Int64

功能:获取该模块信息的哈希值。

返回值:

  • Int64 - 该模块信息的哈希值。

注意:

内部实现为该模块信息的名称和版本号字符串的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该模块信息。

返回值:

  • String - 字符串形式的该模块信息。

注意:

内容为该模块的名称和版本号。

operator func !=(ModuleInfo)

public operator func !=(that: ModuleInfo): Bool

功能:判断该模块信息与给定的另一个模块信息是否不等。

参数:

  • that: ModuleInfo - 被比较相等性的另一个模块信息。

返回值:

  • Bool - 如果该模块信息与 that 不等则返回 true,否则返回 false

operator func ==(ModuleInfo)

public operator func ==(that: ModuleInfo): Bool

功能:判断该模块信息与给定的另一个模块信息是否相等。

参数:

  • that: ModuleInfo - 被比较相等性的另一个模块信息。

返回值:

  • Bool - 如果该模块信息与 that 相等则返回 true,否则返回 false

class PackageInfo

public class PackageInfo <: Equatable<PackageInfo> & Hashable & ToString

功能:描述包信息。

父类型:

prop functions

public prop functions: Collection<GlobalFunctionInfo>

功能:获取该 PackageInfo 对应的包中所有公开全局函数的信息所组成的列表。

类型:Collection<GlobalFunctionInfo>

prop name

public prop name: String

功能:获取该包信息所对应的包的名称。

注意:

包的名称不包含其所在的模块名称和其父包的名称,例如限定名称为 a/b.c.d 的包的名称是 d

类型:String

prop qualifiedName

public prop qualifiedName: String

功能:获取该 PackageInfo 对应的包的限定名称。

注意:

包的限定名称的格式是 (module_name/)?(default|package_name)(.package_name)*,例如限定名称为 a/b.c.d 的包位于模块 a 下的 b 包里的 c 包里。

类型:String

prop typeInfos

public prop typeInfos: Collection<TypeInfo>

功能:获取该 PackageInfo 对应的包中所有全局定义的公开类型的类型信息,返回对应集合。

注意:

目前该列表不包含所有反射尚未支持的类型。

类型:Collection<TypeInfo>

prop variables

public prop variables: Collection<GlobalVariableInfo>

功能:获取该 PackageInfo 对应的包中所有公开全局变量的信息所组成的列表。

类型:Collection<GlobalVariableInfo>

func getFunction(String, Array<TypeInfo>)

public func getFunction(name: String, parameterTypes: Array<TypeInfo>): GlobalFunctionInfo

功能:尝试在该 PackageInfo 对应的包中获取拥有给定函数名称且与给定形参类型信息列表匹配的公开全局函数的信息。

参数:

  • name: String - 全局函数的名称。
  • parameterTypes: Array<TypeInfo> - 形参类型信息列表。

异常:

func getTypeInfo(String)

public func getTypeInfo(qualifiedName: String): TypeInfo

功能:尝试在该 PackageInfo 对应的包中获取拥有给定类型名称的全局定义的公开类型的类型信息。

参数:

  • qualifiedName: String - 类型的限定名称

返回值:

  • TypeInfo - 如果成功匹配则返回该全局定义的公开类型的类型信息。

异常:

func getVariable(String)

public func getVariable(name: String): GlobalVariableInfo

功能:尝试在该 PackageInfo 对应的包中获取拥有给定变量名称的公开全局变量的信息。

参数:

  • name: String - 全局变量的名称。

异常:

func hashCode()

public func hashCode(): Int64

功能:获取该包信息的哈希值。

返回值:

  • Int64 - 该包信息的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该包信息。

注意:

内部实现为该包信息的限定名称字符串。

返回值:

  • String - 字符串形式的该包信息。

operator func !=(PackageInfo)

public operator func !=(that: PackageInfo): Bool

功能:判断该包信息与给定的另一个包信息是否不等。

注意:

内部实现为比较两个包信息的限定名称是否相等。

参数:

  • that: PackageInfo - 被比较相等性的另一个包信息。

返回值:

  • Bool - 如果该包信息与 that 不等则返回 true,否则返回 false

operator func ==(PackageInfo)

public operator func ==(that: PackageInfo): Bool

功能:判断该包信息与给定的另一个包信息是否相等。

注意:

内部实现为比较两个包信息的限定名称是否相等。

参数:

  • that: PackageInfo - 被比较相等性的另一个包信息。

返回值:

  • Bool - 如果该包信息与 that 相等则返回 true,否则返回 false

class ParameterInfo

public class ParameterInfo <: Equatable<ParameterInfo> & Hashable & ToString

功能:描述函数形参信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 ParameterInfo 对应的函数形参的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该函数形参信息所对应的函数形参,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop index

public prop index: Int64

功能:获知该 ParameterInfo 对应的形参是其所在函数的第几个形参。

注意:

index 从0开始计数。

类型:Int64

prop name

public prop name: String

功能:获取该 ParameterInfo 对应的形参的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 ParameterInfo 对应的函数形参的声明类型所对应的类型信息。

类型:TypeInfo

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 ParameterInfo 对应的函数形参且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func hashCode()

public func hashCode(): Int64

功能:获取该函数形参信息的哈希值。

返回值:

  • Int64 - 该函数形参信息的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该函数形参信息。

返回值:

  • String - 字符串形式的该函数形参信息。

operator func !=(ParameterInfo)

public operator func !=(that: ParameterInfo): Bool

功能:判断该函数形参信息与给定的另一个函数形参信息是否不等。

参数:

  • that: ParameterInfo - 被比较相等性的另一个函数形参信息。

返回值:

  • Bool - 如果该函数形参信息与 that 不等则返回 true,否则返回 false

operator func ==(ParameterInfo)

public operator func ==(that: ParameterInfo): Bool

功能:判断该函数形参信息与给定的另一个函数形参信息是否相等。

参数:

  • that: ParameterInfo - 被比较相等性的另一个函数形参信息。

返回值:

  • Bool - 如果该函数形参信息与 that 相等则返回 true,否则返回 false

class PrimitiveTypeInfo

public class PrimitiveTypeInfo <: TypeInfo

功能:描述原始数据类型的类型信息。

原始数据类型包括无类型(Nothing)、单元类型(Unit)、字符类型(Rune)、布尔类型(Bool),整形类型(Int8Int16Int32Int64IntNativeUInt8UInt16UInt32UInt64UIntNative)和浮点类型(Float16Float32Float64)。

注意:

目前尚不支持 Nothing 原始数据类型。

父类型:

class StaticFunctionInfo

public class StaticFunctionInfo <: Equatable<StaticFunctionInfo> & Hashable & ToString

功能:描述静态成员函数信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 StaticFunctionInfo 对应的静态成员函数的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该 StaticFunctionInfo 对应的静态成员函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 StaticFunctionInfo 对应的静态成员函数所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该静态成员函数无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 StaticFunctionInfo 对应的静态成员函数的名称。

注意:

构成重载的所有静态成员函数将拥有相同的名称。

类型:String

prop parameters

public prop parameters: InfoList<ParameterInfo>

功能:获取该 StaticFunctionInfo 对应的静态成员函数的形参信息列表。

类型:InfoList<ParameterInfo>

prop returnType

public prop returnType: TypeInfo

功能:获取该 StaticFunctionInfo 对应的静态成员函数的返回值类型的类型信息。

类型:TypeInfo

func apply(Array<Any>)

public func apply(args: Array<Any>): Any

功能:调用该 StaticFunctionInfo 对应静态成员函数,传入实参列表并返回调用结果。

注意:

目前,实参不支持 struct 类型的实例。

参数:

返回值:

  • Any - 该静态成员函数的调用结果。

异常:

  • IllegalArgumentException - 如果实参列表 args 中的实参的数目与该静态成员函数信息所对应的静态成员函数的形参列表中的形参的数目不等,则抛出异常。
  • IllegalTypeException - 如果实参列表 args 中的任何一个实参的运行时类型不是该静态成员函数信息所对应的静态成员函数的对应形参的声明类型的子类型,则抛出异常。
  • Exception - 如果被调用的静态成员函数信息所对应的静态成员函数内部抛出异常,则该异常将被封装为 Exception 异常并抛出。

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于 StaticFunctionInfo 对应的静态成员函数且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func hashCode()

public func hashCode(): Int64

功能:获取该静态成员函数信息的哈希值。

返回值:

  • Int64 - 该静态成员函数信息的哈希值。

func toString()

public func toString(): String

功能:获取字符串形式的该静态成员函数信息。

返回值:

  • String - 字符串形式的该静态成员函数信息。

operator func !=(StaticFunctionInfo)

public operator func !=(that: StaticFunctionInfo): Bool

功能:判断该静态成员函数信息与给定的另一个静态成员函数信息是否不等。

参数:

返回值:

  • Bool - 如果该静态成员函数信息与 that 不等则返回 true,否则返回 false

operator func ==(StaticFunctionInfo)

public operator func ==(that: StaticFunctionInfo): Bool

功能:判断该静态成员函数信息与给定的另一个静态成员函数信息是否相等。

参数:

返回值:

  • Bool - 如果该静态成员函数信息与 that 相等则返回 true,否则返回 false

class StaticPropertyInfo

public class StaticPropertyInfo <: Equatable<StaticPropertyInfo> & Hashable & ToString

静态成员属性信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 StaticPropertyInfo 所对应的静态成员属性的注解所组成的集合。

注意:

  • 如果无任何注解作用于该静态成员属性信息所对应的静态成员属性,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 StaticPropertyInfo 对应的静态成员属性所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该静态成员属性无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 目前获取到的修饰符集合内容较为混乱,尚未统一。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 StaticPropertyInfo 对应的静态成员属性的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 StaticPropertyInfo 对应的静态成员属性的声明类型的类型信息。

类型:TypeInfo

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 StaticPropertyInfo 对应的静态成员属性且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func getValue()

public func getValue(): Any

功能:获取该 StaticPropertyInfo 对应的静态成员属性的值。

注意:

如果该静态成员属性缺少合法实现,如 interface 类型中的抽象静态成员属性,则应抛出 UnsupportedException 异常,但由于后端尚未支持,故尚未实现。

返回值:

  • Any - 该静态成员属性的值。

func hashCode()

public func hashCode(): Int64

功能:获取该静态成员属性信息的哈希值。

返回值:

  • Int64 - 该静态成员属性信息的哈希值。

func isMutable()

public func isMutable(): Bool

功能:判断该静态成员属性信息所对应的静态成员属性是否可修改。

返回值:

  • Bool - 如果该静态成员属性信息所对应的静态成员属性可被修改则返回 true ,否则返回 false

注意:

  • 如果静态成员属性被 mut 修饰符所修饰,则该静态成员属性可被修改,否则不可被修改。
  • 任何 struct 类型的任何静态成员属性均不可修改。
  • 任何类型为 struct 的静态成员属性均不可修改。

func setValue(Any)

public func setValue(newValue: Any): Unit

功能:设置该 StaticPropertyInfo 对应的静态成员属性的值。

注意:

如果该静态成员属性缺少合法实现,如 interface 类型中的抽象静态成员属性,则应抛出 UnsupportedException 异常,但由于后端尚未支持,故尚未实现。

参数:

  • newValue: Any - 新值。

异常:

  • IllegalSetException - 如果该静态成员属性信息所对应的静态成员属性不可修改,则抛出异常。
  • IllegalTypeException - 如果新值 newValue 的运行时类型不是该静态成员属性信息所对应的静态成员属性的声明类型的子类型,则抛出异常。

func toString()

public func toString(): String

功能:获取字符串形式的该静态成员属性信息。

返回值:

  • String - 字符串形式的该静态成员属性信息。

operator func !=(StaticPropertyInfo)

public operator func !=(that: StaticPropertyInfo): Bool

功能:判断该静态成员属性信息与给定的另一个静态成员属性信息是否不等。

参数:

返回值:

  • Bool - 如果该静态成员属性信息与 that 不等则返回 true,否则返回 false

operator func ==(StaticPropertyInfo)

public operator func ==(that: StaticPropertyInfo): Bool

功能:判断该静态成员属性信息与给定的另一个静态成员属性信息是否相等。

参数:

返回值:

  • Bool - 如果该静态成员属性信息与 that 相等则返回 true,否则返回 false

class StaticVariableInfo

public class StaticVariableInfo <: Equatable<StaticVariableInfo> & Hashable & ToString

功能:描述静态成员变量信息。

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 StaticVariableInfo 对应的静态成员变量的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该 StaticVariableInfo 对应的静态成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 StaticVariableInfo 对应的静态成员变量所拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该静态成员变量无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 目前获取到的修饰符集合内容较为混乱,尚未统一。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 StaticVariableInfo 对应的静态成员变量的名称。

类型:String

prop typeInfo

public prop typeInfo: TypeInfo

功能:获取该 StaticVariableInfo 对应的静态成员变量的声明类型的类型信息。

类型:TypeInfo

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 StaticVariableInfo 对应的静态成员变量且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func getValue()

public func getValue(): Any

功能:获取该 StaticVariableInfo 对应的静态成员变量的值。

返回值:

  • Any - 该静态成员变量的值。

注意:

  • 返回值不支持为 struct 类型。

func hashCode()

public func hashCode(): Int64

功能:获取该静态成员变量信息的哈希值。

返回值:

  • Int64 - 该静态成员变量信息的哈希值。

func isMutable()

public func isMutable(): Bool

功能:判断该 StaticVariableInfo 对应的静态成员变量是否可修改。

注意:

  • 如果静态成员变量被 var 修饰符所修饰,则该静态成员变量可被修改。
  • 如果静态成员变量被 let 修饰符所修饰,则该静态成员变量不可被修改。
  • 任何 struct 类型的任何静态成员变量均不可修改。
  • 任何类型为 struct 的静态成员变量均不可修改。

返回值:

  • Bool - 如果该静态成员变量信息所对应的静态成员变量可被修改则返回 true ,否则返回 false

func setValue(Any)

public func setValue(newValue: Any): Unit

功能:设置该 StaticVariableInfo 对应的静态成员变量的值。

参数:

  • newValue: Any - 新值。

异常:

  • IllegalSetException - 如果该 StaticVariableInfo 对应的静态成员变量不可修改,则抛出异常。
  • IllegalTypeException - 如果新值 newValue 的运行时类型不是该静态成员变量信息所对应的静态成员变量的声明类型的子类型,则抛出异常。

func toString()

public func toString(): String

功能:获取字符串形式的该静态成员变量信息。

返回值:

  • String - 字符串形式的该静态成员变量信息。

operator func !=(StaticVariableInfo)

public operator func !=(that: StaticVariableInfo): Bool

功能:判断该静态成员变量信息与给定的另一个静态成员变量信息是否不等。

参数:

返回值:

  • Bool - 如果该静态成员变量信息与 that 不等则返回 true,否则返回 false

operator func ==(StaticVariableInfo)

public operator func ==(that: StaticVariableInfo): Bool

功能:判断该静态成员变量信息与给定的另一个静态成员变量信息是否相等。

参数:

返回值:

  • Bool - 如果该静态成员变量信息与 that 相等则返回 true,否则返回 false

class StructTypeInfo

public class StructTypeInfo <: TypeInfo

功能:描述 struct 类型的类型信息。

父类型:

prop constructors

public prop constructors: Collection<ConstructorInfo>

功能:获取该 StructTypeInfo 对应的 struct 的所有公开构造函数信息,返回对应集合。

注意:

  • 如果该 struct 类型无任何公开构造函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<ConstructorInfo>

prop instanceVariables

public prop instanceVariables: Collection<InstanceVariableInfo>

功能:获取该 StructTypeInfo 对应的 struct 的所有公开实例成员变量信息,返回对应集合。

注意:

  • 如果该 struct 类型无任何公开实例成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<InstanceVariableInfo>

prop staticVariables

public prop staticVariables: Collection<StaticVariableInfo>

功能:获取该 StructTypeInfo 对应的 struct 的所有公开静态成员变量信息,返回对应集合。

注意:

  • 如果该 struct 类型无任何公开静态成员变量,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<StaticVariableInfo>

func construct(Array<Any>)

public func construct(args: Array<Any>): Any

功能:在该 StructTypeInfo 对应的 struct 类型中根据实参列表搜索匹配的构造函数并调用,传入实参列表,返回调用结果。

参数:

返回值:

  • Any - 该 struct 类型的实例。

异常:

注意:

由于 construct 函数本质上调用的是 apply 函数,而目前 struct 类型中定义的构造函数不支持被调用 apply 函数,故该函数目前无法正常使用

func getConstructor(Array<TypeInfo>)

public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo

功能:尝试在该 StructTypeInfo 对应的 struct 类型中获取与给定形参类型信息列表匹配的公开构造函数的信息。

参数:

返回值:

  • ConstructorInfo - 如果成功匹配则返回该公开构造函数的信息。

异常:

func getInstanceVariable(String)

public func getInstanceVariable(name: String): InstanceVariableInfo

功能:给定变量名称,尝试获取该 StructTypeInfo 对应的 struct 类型中匹配的实例成员变量的信息。

参数:

  • name: String - 变量名称。

返回值:

异常:

func getStaticVariable(String)

public func getStaticVariable(name: String): StaticVariableInfo

功能:给定变量名称,尝试获取该 StructTypeInfo 对应的 struct 类型中匹配的静态成员变量的信息。

参数:

  • name: String - 变量名称。

返回值:

异常:

class TypeInfo

sealed abstract class TypeInfo <: Equatable<TypeInfo> & Hashable & ToString

功能:TypeInfo 提供了所有数据类型通用的操作接口。开发者通常无需向下转型为更具体的数据类型,如 ClassTypeInfo 等,就能进行反射操作。

TypeInfo 的子类包括 PrimitiveTypeInfoStructTypeInfoClassTypeInfoInterfaceTypeInfo,分别对应基本数据类型,struct 数据类型,class 数据类型和 interface 数据类型的类型信息。

说明

类型的限定名称为(module_name/)?(default|package_name)(.package_name)*.(type_name)

父类型:

prop annotations

public prop annotations: Collection<Annotation>

功能:获取所有作用于该 TypeInfo 对应的类型的注解,返回对应集合。

注意:

  • 如果无任何注解作用于该类型信息所对应的类型,则返回空集合。
  • 该集合不保证遍历顺序恒定。

类型:Collection<Annotation>

prop instanceFunctions

public prop instanceFunctions: Collection<InstanceFunctionInfo>

功能:获取该 TypeInfo 对应类型的所有公开实例成员函数信息,返回对应集合。

注意:

  • 如果该 TypeInfo 对应的类型无任何公开实例成员函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 如果该类型信息所对应的类型是 structclass 类型,则该集合包含从其他 interface 类型继承而来的非抽象的实例成员函数的信息。

类型:Collection<InstanceFunctionInfo>

prop instanceProperties

public prop instanceProperties: Collection<InstancePropertyInfo>

功能:获取该 TypeInfo 对应类型的所有公开实例成员属性信息,返回对应集合。

注意:

  • 如果该 TypeInfo 对应的类型无任何公开实例成员属性,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 如果该类型信息所对应的类型是 structclass 类型,则该集合包含从其他 interface 类型继承而来的非抽象的实例成员属性的信息。

类型:Collection<InstancePropertyInfo>

prop modifiers

public prop modifiers: Collection<ModifierInfo>

功能:获取该 TypeInfo 对应的类型拥有的所有修饰符的信息,返回对应集合。

注意:

  • 如果该类型无任何修饰符,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • interface 类型默认拥有 open 语义,故返回的集合总是包含 open 修饰符。
  • 由于反射功能只能对所有被 public 访问控制修饰符所修饰的类型进行操作,故将忽略所有访问控制修饰符。

类型:Collection<ModifierInfo>

prop name

public prop name: String

功能:获取该 TypeInfo 对应的类型的名称。

注意:

  • 该名称不包含任何模块名和包名前缀。
  • 类型别名的类型信息就是实际类型其本身的类型信息,所以该函数并不会返回类型别名本身的名称而是实际类型的名称,如类型别名 Byte 的类型信息的名称是 UInt8 而不是 Byte

类型:String

prop qualifiedName

public prop qualifiedName: String

功能:获取该 TypeInfo 对应的类型的限定名称。

注意:

  • 限定名称包含模块名和包名前缀。
  • 特别的,仓颉内置数据类型,以及位于 std 模块 core 包下的所有类型的限定名称都是不带有任何模块名和包名前缀的。
  • 在缺省模块名和包名的上下文中定义的所有类型,均无模块名前缀,但拥有包名前缀"default",如:"default.MyType"。

类型:String

prop staticFunctions

public prop staticFunctions: Collection<StaticFunctionInfo>

功能:获取该 TypeInfo 对应类型的所有公开静态成员函数信息,返回对应集合。

注意:

  • 如果该 TypeInfo 对应的类型无任何公开静态成员函数,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 如果该类型信息所对应的类型是 structclassinterface 类型,则该集合包含从其他 interface 类型继承而来的非抽象的静态成员函数的信息。

类型:Collection<StaticFunctionInfo>

prop staticProperties

public prop staticProperties: Collection<StaticPropertyInfo>

功能:获取该 TypeInfo 对应类型的所有公开静态成员属性信息,返回对应集合。

注意:

  • 如果该 TypeInfo 对应的类型无任何公开静态成员属性,则返回空集合。
  • 该集合不保证遍历顺序恒定。
  • 如果该类型信息所对应的类型是 structclassinterface 类型,则该集合包含从其他 interface 类型继承而来的非抽象的静态成员属性的信息。

类型:Collection<StaticPropertyInfo>

prop superInterfaces

public prop superInterfaces: Collection<InterfaceTypeInfo>

功能:获取该 TypeInfo 对应的类型直接实现的所有 interface 类型的信息,返回对应集合。

注意:

  • 所有类型均默认直接实现 interface Any 类型。
  • 该集合不保证遍历顺序恒定。
  • 目前, struct 类型只支持获取到 interface Any 类型。

类型:Collection<InterfaceTypeInfo>

static func get(String)

public static func get(qualifiedName: String): TypeInfo

功能:获取给定的类型的限定名称所对应的类型的 TypeInfo

注意:

  • 未实例化的泛型类型的类型信息无法被获取。
  • 目前, 类型的限定名称 qualifiedName 不支持 Nothing 类型、函数类型、元组类型、enum 类型和带有泛型的 struct 类型的限定名称。

参数:

  • qualifiedName: String - 类型的限定名称。

返回值:

  • TypeInfo - 类型的限定名称 qualifiedName 所对应的类型的类型信息。

异常:

  • InfoNotFoundException - 如果无法获取与给定类型的限定名称 qualifiedName 匹配的类型所对应的类型信息,则抛出异常。

static func of(Any)

public static func of(a: Any): TypeInfo

功能:获取给定的任意类型的实例的运行时类型所对应的类型信息。

运行时类型是指在程序运行时,通过动态绑定确定的类型,运行时类型与实例对象相绑定。在继承等场景下运行时类型和静态类型可能不一致。

注意:

目前,实例 a 不支持运行时类型为函数类型,元组类型,enum 类型和带有泛型的 struct 类型的实例。

参数:

  • a: Any - 实例。

返回值:

  • TypeInfo - 实例 a 的运行时类型所对应的类型信息。

异常:

  • InfoNotFoundException - 如果无法获得实例 a 的运行时类型所对应的类型信息,则抛出异常。

static func of(Object)

public static func of(a: Object): ClassTypeInfo

功能:获取给定的 class 类型的实例的运行时类型所对应的 class 类型信息。

参数:

  • a: Object - class 类型的实例。

返回值:

  • ClassTypeInfo - class 类型的实例 a 的运行时类型所对应的 class 类型信息。

异常:

  • InfoNotFoundException - 如果无法获得实例 a 的运行时类型所对应的 class 类型信息,则抛出异常。

static func of<T>()

public static func of<T>(): TypeInfo

功能:获取给定类型对应的类型信息。

注意:

  • 目前,泛型 T 不支持 Nothing 类型、函数类型,元组类型,enum 类型和带有泛型的 struct 类型。
  • T 支持传入类型别名,包括内置类型别名(如 IntUIntRune 等)与用户自定义类型别名。

返回值:

  • TypeInfo - T 类型对应的类型信息。

异常:

func findAnnotation<T>() where T <: Annotation

public func findAnnotation<T>(): Option<T> where T <: Annotation

功能:尝试获取作用于该 TypeInfo 对应的类型且拥有给定限定名称的注解。

返回值:

  • Option<T> - 如果成功匹配则返回该注解,否则返回 None

func getInstanceFunction(String, Array<TypeInfo>)

public func getInstanceFunction(name: String, parameterTypes: Array<TypeInfo>): InstanceFunctionInfo

功能:给定函数名称与函数形参类型列表所对应的类型信息列表,尝试获取该类型中匹配的实例成员函数的信息。

参数:

  • name: String - 函数名称。
  • parameterTypes: Array<TypeInfo> - 函数形参类型列表所对应的类型信息列表。

返回值:

异常:

func getInstanceProperty(String)

public func getInstanceProperty(name: String): InstancePropertyInfo

功能:尝试获取该类型中与给定属性名称匹配的实例成员属性的信息。

参数:

  • name: String - 属性名称。

返回值:

异常:

func getStaticFunction(String, Array<TypeInfo>)

public func getStaticFunction(name: String, parameterTypes: Array<TypeInfo>): StaticFunctionInfo

功能:通过给定函数名称与函数形参类型列表所对应的类型信息列表,尝试获取该类型中匹配的静态成员函数的信息。

参数:

  • name: String - 函数名称。
  • parameterTypes: Array<TypeInfo> - 函数形参类型列表所对应的类型信息列表。

返回值:

异常:

func getStaticProperty(String)

public func getStaticProperty(name: String): StaticPropertyInfo

功能:尝试获取该类型中与给定属性名称匹配的静态成员属性的信息。

参数:

  • name: String - 属性名称。

返回值:

异常:

func hashCode()

public func hashCode(): Int64

功能:获取该类型信息的哈希值。

注意:

内部实现为该类型信息的限定名称字符串的哈希值。

返回值:

  • Int64 - 该类型信息的哈希值。

func isSubtypeOf(TypeInfo)

public func isSubtypeOf(supertype: TypeInfo): Bool

功能:判断当前 TypeInfo 实例对应的类型是否是参数中指定的 TypeInfo 实例表示的类型的子类型。

注意:

由于目前所有 struct 类型均无法获得其实现的 interface 类型,所以在做 struct 是否为某 interface 的子类型的判断时总是返回 false

参数:

  • supertype: TypeInfo - 目标类型的类型信息。

返回值:

  • Bool - 如果该 TypeInfo 对应的类型是 supertype 所对应的类型的子类型则返回 true,否则返回 false

func toString()

public func toString(): String

功能:获取字符串形式的该类型信息。

注意:

内部实现为该类型信息的限定名称字符串。

返回值:

  • String - 字符串形式的该类型信息。

operator func !=(TypeInfo)

public operator func !=(that: TypeInfo): Bool

功能:判断该类型信息与给定的另一个类型信息是否不等。

参数:

  • that: TypeInfo - 被比较相等性的另一个类型信息。

返回值:

  • Bool - 如果该类型信息的限定名称与 that 不等则返回 true,否则返回 false

operator func ==(TypeInfo)

public operator func ==(that: TypeInfo): Bool

功能:判断该类型信息与给定的另一个类型信息是否相等。

参数:

  • that: TypeInfo - 被比较相等性的另一个类型信息。

返回值:

  • Bool - 如果该类型信息的限定名称与 that 相等则返回 true,否则返回 false