类
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
类型本身就是自己的子类。
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
类型的实例。
异常:
- IllegalTypeException - 如果该
class
类型拥有abstract
语义,调用construct
则抛出异常,因为抽象类不可被实例化。 - MisMatchException - 如果
args
未能成功匹配任何该class
类型的公开构造函数,则抛出异常。 - InvocationTargetException - 在被调用的构造函数内部抛出的任何异常均将被封装为 InvocationTargetException 异常并抛出。
func getConstructor(Array<TypeInfo>)
public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo
功能:尝试在该 ClassTypeInfo 对应的 class
类型中获取与给定形参类型信息列表匹配的公开构造函数的信息。
参数:
返回值:
- ConstructorInfo - 如果成功匹配则返回该公开构造函数的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开构造函数,则抛出异常。
func getInstanceVariable(String)
public func getInstanceVariable(name: String): InstanceVariableInfo
功能:给定变量名称,尝试获取该 ClassTypeInfo 所对应的 class
类型中匹配的实例成员变量的信息。
参数:
- name: String - 变量名称。
返回值:
- InstanceVariableInfo - 如果成功匹配则返回该实例成员变量的信息。
异常:
- InfoNotFoundException - 如果没找到对应实例成员变量,则抛出异常。
func getStaticVariable(String)
public func getStaticVariable(name: String): StaticVariableInfo
功能:给定变量名称,尝试获取该 ClassTypeInfo 所对应的 class
类型中匹配的静态成员变量的信息。
参数:
- name: String - 变量名称。
返回值:
- StaticVariableInfo - 如果成功匹配则返回该静态成员变量的信息。
异常:
- InfoNotFoundException - 如果没找到对应静态成员变量,则抛出异常。
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 所对应的构造函数的形参类型列表。
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
功能:判断该构造器信息与给定的另一个构造器信息是否不等。
参数:
- that: ConstructorInfo - 被比较相等性的另一个构造器信息。
返回值:
- Bool - 如果该构造器信息与
that
不等则返回true
,否则返回false
。
operator func ==(ConstructorInfo)
public operator func ==(that: ConstructorInfo): Bool
功能:判断该构造器信息与给定的另一个构造器信息是否相等。
参数:
- that: ConstructorInfo - 被比较相等性的另一个构造器信息。
返回值:
- 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 对应的全局函数的形参信息列表。
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
功能:判断该全局函数信息与给定的另一个全局函数信息是否相等。
参数:
- that: GlobalFunctionInfo - 被比较相等性的另一个全局函数信息。
返回值:
- Bool - 如果该全局函数信息与
that
相等则返回true
,否则返回false
。
operator func !=(GlobalFunctionInfo)
public operator func !=(that: GlobalFunctionInfo): Bool
功能:判断该全局函数信息与给定的另一个全局函数信息是否不等。
参数:
- that: GlobalFunctionInfo - 被比较相等性的另一个全局函数信息。
返回值:
- 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
功能:判断该全局变量信息与给定的另一个全局变量信息是否相等。
参数:
- that: GlobalVariableInfo - 被比较相等性的另一个全局变量信息。
返回值:
- Bool - 如果该全局变量信息与
that
相等则返回true
,否则返回false
。
operator func !=(GlobalVariableInfo)
public operator func !=(that: GlobalVariableInfo): Bool
功能:判断该全局变量信息与给定的另一个全局变量信息是否不等。
参数:
- that: GlobalVariableInfo - 被比较相等性的另一个全局变量信息。
返回值:
- Bool - 如果该全局变量信息与
that
不等则返回true
,否则返回false
。
class InfoList
public class InfoList<T> <: Collection<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 - 该信息列表指定位置上的元素。
异常:
- IndexOutOfBoundsException - 如果
index
超出索引范围,则抛出异常。
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 对应的实例成员函数所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该实例成员函数无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。
prop name
public prop name: String
功能:获取该 InstanceFunctionInfo 对应的实例成员函数的名称。
注意:
- 构成重载的所有实例成员函数将拥有相同的名称。
- 操作符重载函数的名称就是该操作符本身的符号内容,如"
+
","*
","[]
"。
类型:String
prop parameters
public prop parameters: InfoList<ParameterInfo>
功能:获取该 InstanceFunctionInfo 对应的实例成员函数的形参信息列表。
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
类型的实例。
参数:
返回值:
- 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
功能:判断该实例成员函数信息与给定的另一个实例成员函数信息是否相等。
参数:
- that: InstanceFunctionInfo - 被比较相等性的另一个实例成员函数信息。
返回值:
- Bool - 如果该实例成员函数信息与
that
相等则返回true
,否则返回false
。
operator func !=(InstanceFunctionInfo)
public operator func !=(that: InstanceFunctionInfo): Bool
功能:判断该实例成员函数信息与给定的另一个实例成员函数信息是否不等。
参数:
- that: InstanceFunctionInfo - 被比较相等性的另一个实例成员函数信息。
返回值:
- 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 对应的实例成员属性所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该实例成员属性无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。
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
类型的实例。
参数:
异常:
- IllegalSetException - 如果该实例成员属性信息所对应的实例成员属性不可修改,则抛出异常。
- IllegalTypeException - 如果实例
instance
的运行时类型与该实例成员属性信息所对应的实例成员属性所属的类型不严格相同,则抛出异常。 - IllegalTypeException - 如果新值
newValue
的运行时类型不是该实例成员属性信息所对应的实例成员属性的声明类型的子类型,则抛出异常。
func toString()
public func toString(): String
功能:获取字符串形式的该实例成员属性信息。
返回值:
- String - 字符串形式的该实例成员属性信息。
operator func !=(InstancePropertyInfo)
public operator func !=(that: InstancePropertyInfo): Bool
功能:判断该实例成员属性信息与给定的另一个实例成员属性信息是否不等。
参数:
- that: InstancePropertyInfo - 被比较相等性的另一个实例成员属性信息。
返回值:
- Bool - 如果该实例成员属性信息与
that
不等则返回true
,否则返回false
。
operator func ==(InstancePropertyInfo)
public operator func ==(that: InstancePropertyInfo): Bool
功能:判断该实例成员属性信息与给定的另一个实例成员属性信息是否相等。
参数:
- that: InstancePropertyInfo - 被比较相等性的另一个实例成员属性信息。
返回值:
- 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 对应的实例成员变量所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该实例成员变量无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。
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
类型的实例。
参数:
异常:
- IllegalSetException - 如果该实例成员变量信息所对应的实例成员变量不可修改,则抛出异常。
- IllegalTypeException - 如果实例
instance
的运行时类型与该实例成员变量信息所对应的实例成员变量所属的类型不严格相同,则抛出异常。 - IllegalTypeException - 如果新值
newValue
的运行时类型不是该实例成员变量信息所对应的实例成员变量的声明类型的子类型,则抛出异常。
func toString()
public func toString(): String
功能:获取字符串形式的该实例成员变量信息。
返回值:
- String - 字符串形式的该实例成员变量信息。
operator func ==(InstanceVariableInfo)
public operator func ==(that: InstanceVariableInfo): Bool
功能:判断该实例成员变量信息与给定的另一个实例成员变量信息是否相等。
参数:
- that: InstanceVariableInfo - 被比较相等性的另一个实例成员变量信息。
返回值:
- Bool - 如果该实例成员变量信息与
that
相等则返回true
,否则返回false
。
operator func !=(InstanceVariableInfo)
public operator func !=(that: InstanceVariableInfo): Bool
功能:判断该实例成员变量信息与给定的另一个实例成员变量信息是否不等。
参数:
- that: InstanceVariableInfo - 被比较相等性的另一个实例成员变量信息。
返回值:
- 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>
功能:获取该模块中包含的所有包。
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/a
、m/a.b
、m/a.c
这三个包所对应的共享库的加载是互斥的。
参数:
- path: String - 共享库文件的绝对路径或相对路径。
异常:
- ReflectException - 如果共享库加载失败,则会抛出异常。
- UnsupportedException - 如果具有相同模块名称的共享库被重复加载,则会抛出异常。
func getPackageInfo(String)
public func getPackageInfo(packageName: String): PackageInfo
功能:尝试在该 ModuleInfo 对应的模块中获取与给定包的名称或限定名称匹配的包的信息。
参数:
- packageName: String - 包的名称或限定名称。
返回值:
- PackageInfo - 如果匹配成功则返回该包的信息。
异常:
- InfoNotFoundException - 如果没找到对应包,则抛出异常。
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 对应的包中获取拥有给定函数名称且与给定形参类型信息列表匹配的公开全局函数的信息。
参数:
异常:
- InfoNotFoundException - 如果没找到对应全局定义的公开全局函数,则抛出异常。
func getTypeInfo(String)
public func getTypeInfo(qualifiedName: String): TypeInfo
功能:尝试在该 PackageInfo 对应的包中获取拥有给定类型名称的全局定义的公开类型的类型信息。
参数:
- qualifiedName: String - 类型的限定名称
返回值:
- TypeInfo - 如果成功匹配则返回该全局定义的公开类型的类型信息。
异常:
- InfoNotFoundException - 如果没找到对应全局定义的公开类型,则抛出异常。
func getVariable(String)
public func getVariable(name: String): GlobalVariableInfo
功能:尝试在该 PackageInfo 对应的包中获取拥有给定变量名称的公开全局变量的信息。
参数:
- name: String - 全局变量的名称。
异常:
- InfoNotFoundException - 如果没找到对应全局定义的公开全局变量,则抛出异常。
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),整形类型(Int8,Int16,Int32,Int64,IntNative,UInt8,UInt16,UInt32,UInt64,UIntNative)和浮点类型(Float16,Float32,Float64)。
注意:
目前尚不支持
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 对应的静态成员函数所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该静态成员函数无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 即便未被某修饰符修饰,如果拥有该修饰符的语义,该修饰符信息也将被包括在该集合中。
prop name
public prop name: String
功能:获取该 StaticFunctionInfo 对应的静态成员函数的名称。
注意:
构成重载的所有静态成员函数将拥有相同的名称。
类型:String
prop parameters
public prop parameters: InfoList<ParameterInfo>
功能:获取该 StaticFunctionInfo 对应的静态成员函数的形参信息列表。
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
功能:判断该静态成员函数信息与给定的另一个静态成员函数信息是否不等。
参数:
- that: StaticFunctionInfo - 被比较相等性的另一个静态成员函数信息。
返回值:
- Bool - 如果该静态成员函数信息与
that
不等则返回true
,否则返回false
。
operator func ==(StaticFunctionInfo)
public operator func ==(that: StaticFunctionInfo): Bool
功能:判断该静态成员函数信息与给定的另一个静态成员函数信息是否相等。
参数:
- that: StaticFunctionInfo - 被比较相等性的另一个静态成员函数信息。
返回值:
- 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 对应的静态成员属性所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该静态成员属性无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 目前获取到的修饰符集合内容较为混乱,尚未统一。
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
功能:判断该静态成员属性信息与给定的另一个静态成员属性信息是否不等。
参数:
- that: StaticPropertyInfo - 被比较相等性的另一个静态成员属性信息。
返回值:
- Bool - 如果该静态成员属性信息与
that
不等则返回true
,否则返回false
。
operator func ==(StaticPropertyInfo)
public operator func ==(that: StaticPropertyInfo): Bool
功能:判断该静态成员属性信息与给定的另一个静态成员属性信息是否相等。
参数:
- that: StaticPropertyInfo - 被比较相等性的另一个静态成员属性信息。
返回值:
- 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 对应的静态成员变量所拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该静态成员变量无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 目前获取到的修饰符集合内容较为混乱,尚未统一。
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
功能:判断该静态成员变量信息与给定的另一个静态成员变量信息是否不等。
参数:
- that: StaticVariableInfo - 被比较相等性的另一个静态成员变量信息。
返回值:
- Bool - 如果该静态成员变量信息与
that
不等则返回true
,否则返回false
。
operator func ==(StaticVariableInfo)
public operator func ==(that: StaticVariableInfo): Bool
功能:判断该静态成员变量信息与给定的另一个静态成员变量信息是否相等。
参数:
- that: StaticVariableInfo - 被比较相等性的另一个静态成员变量信息。
返回值:
- 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
类型的实例。
异常:
- MisMatchException - 如果
args
未能成功匹配任何该struct
类型的公开构造函数,则抛出异常 - InvocationTargetException - 在被调用的构造函数内部抛出的任何异常均将被封装为 InvocationTargetException 异常并抛出。
注意:
由于
construct
函数本质上调用的是apply
函数,而目前struct
类型中定义的构造函数不支持被调用apply
函数,故该函数目前无法正常使用
func getConstructor(Array<TypeInfo>)
public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo
功能:尝试在该 StructTypeInfo 对应的 struct
类型中获取与给定形参类型信息列表匹配的公开构造函数的信息。
参数:
返回值:
- ConstructorInfo - 如果成功匹配则返回该公开构造函数的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开构造函数,则抛出异常。
func getInstanceVariable(String)
public func getInstanceVariable(name: String): InstanceVariableInfo
功能:给定变量名称,尝试获取该 StructTypeInfo 对应的 struct
类型中匹配的实例成员变量的信息。
参数:
- name: String - 变量名称。
返回值:
- InstanceVariableInfo - 如果成功匹配则返回该实例成员变量的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开实例成员变量,则抛出异常。
func getStaticVariable(String)
public func getStaticVariable(name: String): StaticVariableInfo
功能:给定变量名称,尝试获取该 StructTypeInfo 对应的 struct
类型中匹配的静态成员变量的信息。
参数:
- name: String - 变量名称。
返回值:
- StaticVariableInfo - 如果成功匹配则返回该静态成员变量的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开静态成员变量,则抛出异常。
class TypeInfo
sealed abstract class TypeInfo <: Equatable<TypeInfo> & Hashable & ToString
功能:TypeInfo 提供了所有数据类型通用的操作接口。开发者通常无需向下转型为更具体的数据类型,如 ClassTypeInfo 等,就能进行反射操作。
TypeInfo 的子类包括 PrimitiveTypeInfo、StructTypeInfo、ClassTypeInfo 和 InterfaceTypeInfo,分别对应基本数据类型,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 对应的类型无任何公开实例成员函数,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 如果该类型信息所对应的类型是
struct
或class
类型,则该集合包含从其他interface
类型继承而来的非抽象的实例成员函数的信息。
类型:Collection<InstanceFunctionInfo>
prop instanceProperties
public prop instanceProperties: Collection<InstancePropertyInfo>
功能:获取该 TypeInfo 对应类型的所有公开实例成员属性信息,返回对应集合。
注意:
- 如果该 TypeInfo 对应的类型无任何公开实例成员属性,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 如果该类型信息所对应的类型是
struct
或class
类型,则该集合包含从其他interface
类型继承而来的非抽象的实例成员属性的信息。
类型:Collection<InstancePropertyInfo>
prop modifiers
public prop modifiers: Collection<ModifierInfo>
功能:获取该 TypeInfo 对应的类型拥有的所有修饰符的信息,返回对应集合。
注意:
- 如果该类型无任何修饰符,则返回空集合。
- 该集合不保证遍历顺序恒定。
interface
类型默认拥有open
语义,故返回的集合总是包含open
修饰符。- 由于反射功能只能对所有被
public
访问控制修饰符所修饰的类型进行操作,故将忽略所有访问控制修饰符。
prop name
public prop name: String
功能:获取该 TypeInfo 对应的类型的名称。
注意:
类型:String
prop qualifiedName
public prop qualifiedName: String
功能:获取该 TypeInfo 对应的类型的限定名称。
注意:
- 限定名称包含模块名和包名前缀。
- 特别的,仓颉内置数据类型,以及位于
std
模块core
包下的所有类型的限定名称都是不带有任何模块名和包名前缀的。- 在缺省模块名和包名的上下文中定义的所有类型,均无模块名前缀,但拥有包名前缀"
default
",如:"default.MyType
"。
类型:String
prop staticFunctions
public prop staticFunctions: Collection<StaticFunctionInfo>
功能:获取该 TypeInfo 对应类型的所有公开静态成员函数信息,返回对应集合。
注意:
- 如果该 TypeInfo 对应的类型无任何公开静态成员函数,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 如果该类型信息所对应的类型是
struct
、class
或interface
类型,则该集合包含从其他interface
类型继承而来的非抽象的静态成员函数的信息。
类型:Collection<StaticFunctionInfo>
prop staticProperties
public prop staticProperties: Collection<StaticPropertyInfo>
功能:获取该 TypeInfo 对应类型的所有公开静态成员属性信息,返回对应集合。
注意:
- 如果该 TypeInfo 对应的类型无任何公开静态成员属性,则返回空集合。
- 该集合不保证遍历顺序恒定。
- 如果该类型信息所对应的类型是
struct
、class
或interface
类型,则该集合包含从其他interface
类型继承而来的非抽象的静态成员属性的信息。
类型:Collection<StaticPropertyInfo>
prop superInterfaces
public prop superInterfaces: Collection<InterfaceTypeInfo>
功能:获取该 TypeInfo 对应的类型直接实现的所有 interface
类型的信息,返回对应集合。
注意:
类型: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
功能:获取给定类型对应的类型信息。
注意:
返回值:
- TypeInfo -
T
类型对应的类型信息。
异常:
- InfoNotFoundException - 如果无法获得类型 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
功能:给定函数名称与函数形参类型列表所对应的类型信息列表,尝试获取该类型中匹配的实例成员函数的信息。
参数:
返回值:
- InstanceFunctionInfo - 如果成功匹配则返回该实例成员函数的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开实例成员函数,则抛出异常。
func getInstanceProperty(String)
public func getInstanceProperty(name: String): InstancePropertyInfo
功能:尝试获取该类型中与给定属性名称匹配的实例成员属性的信息。
参数:
- name: String - 属性名称。
返回值:
- InstancePropertyInfo - 如果成功匹配则返回该实例成员属性的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开实例成员属性,则抛出异常。
func getStaticFunction(String, Array<TypeInfo>)
public func getStaticFunction(name: String, parameterTypes: Array<TypeInfo>): StaticFunctionInfo
功能:通过给定函数名称与函数形参类型列表所对应的类型信息列表,尝试获取该类型中匹配的静态成员函数的信息。
参数:
返回值:
- StaticFunctionInfo - 如果成功匹配则返回该静态成员函数的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开静态成员函数,则抛出异常。
func getStaticProperty(String)
public func getStaticProperty(name: String): StaticPropertyInfo
功能:尝试获取该类型中与给定属性名称匹配的静态成员属性的信息。
参数:
- name: String - 属性名称。
返回值:
- StaticPropertyInfo - 如果成功匹配则返回该静态成员属性的信息。
异常:
- InfoNotFoundException - 如果没找到对应公开静态成员属性,则抛出异常。
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 - 目标类型的类型信息。
返回值:
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
。