元数据基本上是告诉我们底层数据的一段数据。它是关于数据的数据。在Dart编程的情况下,元数据可以用来告诉我们更多关于代码的信息。每当我们与新代码进行交互时,我们都可以借助元数据推断出与其相关的信息。
在dart,元数据注释以@ 符号开头,然后是对常量构造函数或编译时常量(如覆盖)的调用。 @override和@deprecated可用于所有dart代码。
我们将看到一个@override 注释的例子来清楚地理解它——
Dart
class geek1 {
void code() {
print("I am at level 1");
}
}
class geek2 extends geek1 {
@override
void code() {
print("I am at level 2");
}
}
void main() {
geek2 m = new geek2();
m.code();
}
Dart
class Implement {
final String what;
final String by;
const Implement(this.what, this.by);
}
@Implement('the following function', 'Geek1')
void geekFunc() {
print('Implement me');
}
void main() {
geekFunc();
}
输出:
I am at level 2
解释:
从上面的代码,我们可以推断出子类正在覆盖父类的方法。 @override 注释使此信息更加清晰。除了dart可用的注释之外,我们还可以创建自己的元数据注释。
例子:
Dart
class Implement {
final String what;
final String by;
const Implement(this.what, this.by);
}
@Implement('the following function', 'Geek1')
void geekFunc() {
print('Implement me');
}
void main() {
geekFunc();
}
输出:
Implement me
在这里,我们使用常量构造函数定义了 @Implement 注释。它有两个参数,即什么是要实施的,另一个是表明由谁来实施。
元数据可以在库、类型参数、函数、构造函数、类等之前以及导入或导出指令之前使用。借助反射,我们可以在运行时获取元数据。