我注意到PetitParserDart has a lot of @override
in the code,但我不知道他们如何被检查?@飞镖代码
我尝试了IDEA dart-plugin @override
,但它根本没有任何效果。我们如何使用Dart使用@override
?
我注意到PetitParserDart has a lot of @override
in the code,但我不知道他们如何被检查?@飞镖代码
我尝试了IDEA dart-plugin @override
,但它根本没有任何效果。我们如何使用Dart使用@override
?
@override
注释是元数据的一个例子。您可以使用Mirrors在代码中检查这些内容。下面是一个检查,如果在子类中m1()
方法有@verride
诠释一个简单的例子:
import 'package:meta/meta.dart';
import 'dart:mirrors';
class A {
m1() {}
}
class B extends A {
@override m1() {}
}
void main() {
ClassMirror classMirror = reflectClass(B);
MethodMirror methodMirror = classMirror.methods[const Symbol('m1')];
InstanceMirror instanceMirror = methodMirror.metadata.first;
print(instanceMirror.reflectee); // Instance of '[email protected]'
}
从@override
DOC:
用于标记一个实例成员(方法,字段,getter或setter)作为覆盖继承的类成员的注释。如果没有重写的成员,工具可以使用此注释提供警告。
因此,它取决于您使用的工具。
在当前的Dart Editor(r24275)中,以下代码没有警告,但它应该(看起来像一个bug)。
import 'package:meta/meta.dart';
class A {
m1() {}
}
class B extends A {
@override m1() {} // no warning because A has a m1()
@override m2() {} // tools should display a warning because A has no m2()
}
它可能使用@override一个好主意,反正现在,因为不存在与这样当工具没有问题是固定的,它会工作。另外,它对于其他程序员阅读代码很有用。 –