Fre*_*ind 5 overriding dart petitparser dart-mirrors
我注意到PetitParserDart@override
在代码中有很多,但我不知道如何检查它们?
我尝试了 IDEA dart-plugin for @override
,但它根本没有效果。我们如何@override
与 Dart 一起使用?
从@override
文档:
用于将实例成员(方法、字段、getter 或 setter)标记为覆盖继承的类成员的注释。如果没有被覆盖的成员,工具可以使用此注释来提供警告。
因此,这取决于您使用的工具。
在当前的 Dart 编辑器(r24275)中,以下代码没有警告,但它应该(它看起来像一个错误)。
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()
}
Run Code Online (Sandbox Code Playgroud)
的@override
注释是元数据的一个例子。您可以使用 Mirrors 在代码中检查这些。下面是一个简单的例子,检查m1()
子类中的方法是否有@override
注解:
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 '_Override@0x2fa0dc31'
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13657 次 |
最近记录: |