反射是程序自我检查与自我修正的能力。反射可以进一步细分为自省——程序在运行时决定自身结构的能力,以及自我修正——程序在运行时改变自身的能力。
Dart的反射基于mirror的概念。mirror在这里指的是反映其他对象的对象。可被反射的不同实体有各自对应的mirror:库mirror、类mirror、方法mirror、对象mirror。
静态成员不会被继承且不能被子类调用。
Dart中的声明可以使用元数据注解进行注释。元数据在声明之前给出,以@
开头,后跟一个常量变量的引用或一个常量构造函数的调用。元数据在运行时可以通过反射进行访问。dart:mirrors
中的类DeclarationMirror
有一个getter
即metadata
,它返回与声明相关联的各种注解值的mirror
列表。